title: Flutter: How would one save a Canvas/CustomPainter to an image file?
body: <p>I am trying to collect a signature from the user and save it to an image. I have made it far enough that I can draw on the screen, but now I'd like to click a button to save to an image and store in my database.</p>
  
  <p>This is what I have so far:</p>
  
  <pre><code>import 'package:flutter/material.dart';
  
  class SignaturePadPage extends StatefulWidget {
    SignaturePadPage({Key key}) : super(key: key);
  
    @override
    _SignaturePadPage createState() =&gt; new _SignaturePadPage();
  }
  class _SignaturePadPage extends State&lt;SignaturePadPage&gt; {
  
    List&lt;Offset&gt; _points = &lt;Offset&gt;[];
  
    @override
    Widget build(BuildContext context) {
      return Container(
        color: Colors.white,
        child: 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) =&gt; _points.add(null),
          child: new CustomPaint(painter: new SignaturePainter(_points)),
        ),
      );
    }
  }
  
  class SignaturePainter extends CustomPainter {
    SignaturePainter(this.points);
    final List&lt;Offset&gt; 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 &lt; points.length - 1; i++) {
        if (points[i] != null &amp;&amp; points[i + 1] != null)
          canvas.drawLine(points[i], points[i + 1], paint);
      }
    }
    bool shouldRepaint(SignaturePainter other) =&gt; other.points != points;
  }
  </code></pre>
  
  <p>Not sure where to go from there...</p>