Signature Canvas
A Flutter package for drawing signatures on a canvas. This package provides functionality to draw smooth lines based on user input gestures.
Features
- Draw smooth lines on a canvas.
- Undo and redo drawing actions.
- Clear the canvas.
- Export the drawn signature as PNG bytes.
- Customize Pan Stroke Width on Canvas
Installation
Add the following line to your pubspec.yaml
dependencies:
dependencies:
flutter_signature_package:
git:
url: https://github.com/Dojibery/flutter-signature-package
Usage
Import the package in your Dart file:
import 'package:my_signature_package/flutter_signature_package.dart';
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Signature Canvas Example'),
),
body: SafeArea(
child: Column(
children: [
Expanded(child: SignatureCanvas()),
ActionButtons(),
],
),
),
),
);
}
}
Explanation
- SignatureCanvas: Widget for drawing signatures based on user input.
Examples
Basic Usage
class MySignaturePage extends StatelessWidget {
final SignatureCanvasController signatureCanvasController = SignatureCanvasController();
void _handleSave(Uint8List pngBytes) {
// Handle the saved PNG bytes here
print('Saved PNG bytes: $pngBytes');
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Signature')),
body: Directionality(
textDirection: TextDirection.ltr,
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Expanded(
child: SignatureCanvas(
backgroundColor: Colors.white,
controller: signatureCanvasController,
onSave: _handleSave,
), ),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
IconButton(
icon: Icon(Icons.undo),
onPressed: () {
signatureCanvasController.undo();
},
),
IconButton(
icon: Icon(Icons.redo),
onPressed: () {
signatureCanvasController.redo();
},
),
IconButton(
icon: Icon(Icons.delete),
onPressed: () {
signatureCanvasController.clearAll();
},
),
IconButton(
icon: Icon(Icons.save),
onPressed: () {
signatureCanvasController.exportDrawing();
},
),
],
),
],
),
),
),
);
}
}
Save Signature as PNG Bytes
SignatureCanvas(
onSave: (Uint8List pngBytes) {
// Handle the saved PNG bytes here
print('Saved PNG bytes: $pngBytes');
},
)
Contributing
Contributions are welcome! Feel free to open issues and pull requests to suggest new features, report bugs, or improve the codebase.
License
This project is licensed under the MIT License - see the LICENSE file for details.