Vous pouvez créer une zone de signature en utilisant GestureDetector
pour enregistrer des touches et CustomPaint
pour dessiner sur l'écran. Voici quelques conseils:
import 'package:flutter/material.dart';
class SignaturePainter extends CustomPainter {
SignaturePainter(this.points);
final List<Offset> points;
void paint(Canvas canvas, Size size) {
Paint paint = new Paint()
..color = Colors.black
..strokeCap = StrokeCap.round
..strokeWidth = 5.0;
for (int i = 0; i < points.length - 1; i++) {
if (points[i] != null && points[i + 1] != null)
canvas.drawLine(points[i], points[i + 1], paint);
}
}
bool shouldRepaint(SignaturePainter other) => other.points != points;
}
class Signature extends StatefulWidget {
SignatureState createState() => new SignatureState();
}
class SignatureState extends State<Signature> {
List<Offset> _points = <Offset>[];
Widget build(BuildContext context) {
return new GestureDetector(
onPanUpdate: (DragUpdateDetails details) {
setState(() {
RenderBox referenceBox = context.findRenderObject();
Offset localPosition =
referenceBox.globalToLocal(details.globalPosition);
_points = new List.from(_points)..add(localPosition);
});
},
onPanEnd: (DragEndDetails details) => _points.add(null),
child: new CustomPaint(painter: new SignaturePainter(_points)),
);
}
}
class DemoApp extends StatelessWidget {
Widget build(BuildContext context) => new Scaffold(body: new Signature());
}
void main() => runApp(new MaterialApp(home: new DemoApp()));
Nous décourageons les messages qui indiquent simplement un problème hors contexte, et attendent la communauté pour le résoudre. En supposant que vous avez essayé de le résoudre vous-même et que vous vous êtes coincé, il pourrait être utile que vous écriviez vos pensées et ce que vous ne pourriez pas comprendre. Ajoutez un [mcve] de votre code et décrivez les problèmes que vous rencontrez. _ "Mais ça ne marche pas" _ n'est pas très utile. – Cerbrus
Votre programme [ne fonctionne pas] (http://importblogkit.com/2015/07/does-not-work/)? –
L'électeur peut-il expliquer son vote? La réponse affichée ici semble plutôt utile .... – user000001