Flutter手写签名功能插件flutter_signature_view的使用

发布于 1周前 作者 h691938207 来自 Flutter

Flutter手写签名功能插件flutter_signature_view的使用

简介

flutter_signature_view 是一个用于在Flutter应用中实现手写签名功能的插件。它允许用户在屏幕上绘制签名,并提供了多种方法来获取和操作签名数据。

安装

首先,在你的 pubspec.yaml 文件中添加以下依赖:

dependencies:
  flutter_signature_view: ^1.1.1

如果你使用的是Flutter的 master 分支,或者遇到构建问题,可以使用 master 分支而不是特定版本。配置如下:

dependencies:
  flutter_signature_view:
    git:
      url: git://github.com:kzjn10/Flutter_SignatureWidget.git

添加依赖后,运行 flutter packages get 或者通过IDE更新包。

使用示例

初始化 SignatureView

简单的初始化方式:

SignatureView _signatureView = SignatureView();

带参数的初始化方式:

SignatureView _signatureView = SignatureView(
  backgroundColor: Colors.yellow,
  penStyle: Paint()
    ..color = Colors.blue
    ..strokeCap = StrokeCap.round
    ..strokeWidth = 5.0,
  onSigned: (data) {
    print("On change $data");
  },
);

参数说明

  • backgroundColor: Canvas背景颜色。
  • data: 字符串类型,用于初始化签名视图的默认数据(该数据将在回调函数 onSigned 中生成)。
  • penStyle: Paint对象,自定义画笔样式。
  • onSigned: 回调函数,返回签名的数据(字符串格式),可用于渲染默认签名视图。

访问数据

  • 获取列表偏移量作为字符串值:_signatureView.exportListOffsetToString()
  • 获取数据作为字节:_signatureView.exportBytes() - 异步函数
  • 获取Base64字符串:_signatureView.exportBase64Image() - 异步函数
  • 检查是否为空:_signatureView.isEmpty
  • 清除当前签名:_signatureView.clear()

完整示例Demo

下面是一个完整的示例,展示了如何使用 flutter_signature_view 插件来创建一个带有签名功能的应用:

import 'package:flutter/material.dart';
import 'package:flutter_signature_view/flutter_signature_view.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Signature View Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: SignaturePage(),
    );
  }
}

class SignaturePage extends StatefulWidget {
  @override
  _SignaturePageState createState() => _SignaturePageState();
}

class _SignaturePageState extends State<SignaturePage> {
  final SignatureView _signatureView = SignatureView(
    backgroundColor: Colors.grey[200],
    penStyle: Paint()
      ..color = Colors.black
      ..strokeCap = StrokeCap.round
      ..strokeWidth = 3.0,
    onSigned: (data) {
      print("Signature data: $data");
    },
  );

  void _clearSignature() {
    setState(() {
      _signatureView.clear();
    });
  }

  Future<void> _saveSignature() async {
    final String base64Image = await _signatureView.exportBase64Image();
    print("Base64 Image: $base64Image");
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Signature Demo'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(8.0),
        child: Column(
          children: <Widget>[
            Expanded(
              child: Container(
                decoration: BoxDecoration(border: Border.all(color: Colors.black)),
                child: _signatureView,
              ),
            ),
            SizedBox(height: 10),
            Row(
              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
              children: <Widget>[
                ElevatedButton(
                  onPressed: _clearSignature,
                  child: Text('Clear'),
                ),
                ElevatedButton(
                  onPressed: _saveSignature,
                  child: Text('Save'),
                ),
              ],
            ),
          ],
        ),
      ),
    );
  }
}

这个示例展示了如何初始化 SignatureView,如何处理签名数据以及如何提供清除和保存签名的功能。希望这对你有所帮助!


更多关于Flutter手写签名功能插件flutter_signature_view的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter手写签名功能插件flutter_signature_view的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用flutter_signature_view插件来实现手写签名功能的示例代码。这个插件允许用户在屏幕上绘制签名,并提供了保存和清除签名的功能。

首先,确保你的Flutter项目中已经添加了flutter_signature_view插件。如果还没有添加,可以在pubspec.yaml文件中添加以下依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_signature_view: ^x.y.z  # 请将x.y.z替换为最新版本号

然后运行flutter pub get来安装依赖。

接下来是示例代码,展示如何在Flutter应用中实现手写签名功能:

import 'package:flutter/material.dart';
import 'package:flutter_signature_view/flutter_signature_view.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Signature View Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: SignaturePage(),
    );
  }
}

class SignaturePage extends StatefulWidget {
  @override
  _SignaturePageState createState() => _SignaturePageState();
}

class _SignaturePageState extends State<SignaturePage> {
  final SignatureController _signatureController = SignatureController();
  String _signatureBase64 = '';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Signature Page'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          children: <Widget>[
            Expanded(
              child: SignaturePad(
                controller: _signatureController,
                backgroundColor: Colors.white,
                penColor: Colors.black,
                clearButton: SignatureClearButton(
                  onPressed: () {
                    _signatureController.clear();
                    setState(() {
                      _signatureBase64 = '';
                    });
                  },
                  child: Icon(Icons.clear),
                ),
              ),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () async {
                _signatureBase64 = await _signatureController.saveImage();
                print('Signature Base64: $_signatureBase64');
                // 你可以在这里将_signatureBase64发送到服务器或保存到本地
              },
              child: Text('Save Signature'),
            ),
            SizedBox(height: 10),
            if (_signatureBase64.isNotEmpty)
              Text('Signature Base64 (for debugging): $_signatureBase64'),
          ],
        ),
      ),
    );
  }
}

在这个示例中:

  1. 我们创建了一个Flutter应用,并在home属性中设置了SignaturePage作为主页。
  2. SignaturePage是一个有状态的组件,它使用SignatureController来管理签名绘制的状态。
  3. SignaturePad组件用于绘制签名,它接收controller属性来绑定SignatureController
  4. SignatureClearButton是一个清除签名的按钮,点击它会调用_signatureController.clear()方法来清除签名,并更新UI中的_signatureBase64为空字符串。
  5. ElevatedButton是一个保存签名的按钮,点击它会调用_signatureController.saveImage()方法来获取签名的Base64编码字符串,并打印到控制台(你也可以将这个字符串发送到服务器或保存到本地)。

这个示例展示了如何在Flutter中使用flutter_signature_view插件来实现基本的手写签名功能。你可以根据需要进一步自定义和扩展这个示例。

回到顶部