Flutter自定义签名插件custom_signature的使用

Flutter自定义签名插件custom_signature的使用

这个包项目提供了一种简单的方式来获取带有自定义UI的签名,并自动旋转到最舒适的横屏模式以便签名。

使用

以下是一个使用 CustomSignature 的示例代码:

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

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Example',
      home: FirstPage(),
    );
  }
}

class FirstPage extends StatelessWidget {
  const FirstPage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: ElevatedButton(
          child: const Text('To sign'),
          onPressed: () async {
            await Navigator.push(
              context,
              MaterialPageRoute(
                builder: (BuildContext context) => CustomSignature(
                  context: context,
                  title: 'Signature',
                  closeButtonColor: Colors.indigo,
                  icon: Icons.close,
                  enabledButtonColor: Colors.green,
                  disabledButtonColor: Colors.lightGreen.withOpacity(0.5),
                  penColor: Colors.black,
                  titleStyle: const TextStyle(
                    fontWeight: FontWeight.w400,
                    fontSize: 16,
                  ),
                  buttonTextStyle: const TextStyle(
                    fontSize: 16,
                    fontWeight: FontWeight.w600,
                  ),
                  textColor: Colors.black,
                  deleteButtonText: 'Delete',
                  doneButtonText: 'Done',
                  closeAlert: AlertDialog(
                    content: const Text('Do you want to exit?'),
                    actions: [
                      ElevatedButton(
                        child: const Text('Ok'),
                        onPressed: () {
                          Navigator.pop(context);
                          Navigator.pop(context);
                        },
                      ),
                      MaterialButton(
                        onPressed: () => Navigator.pop(context),
                        child: const Text('No'),
                      ),
                    ],
                  ),
                ),
              ),
            ).then((value) {
              if (value != null) {
                // 显示签名
                showDialog(
                  context: context,
                  builder: (_) {
                    return AlertDialog(
                      actions: [
                        TextButton(
                          onPressed: () => Navigator.pop(context),
                          child: const Text('Close'),
                        )
                      ],
                      title: const Text('Signature'),
                      content: Image.memory(value),
                    );
                  },
                );
              }
            });
          },
        ),
      ),
    );
  }
}

其他信息

建议导航到的屏幕具有配置了首选方向的状态小部件,以恢复默认方向(纵向)。

SystemChrome.setPreferredOrientations([
  DeviceOrientation.portraitUp,
  DeviceOrientation.portraitDown,
]);

更多关于Flutter自定义签名插件custom_signature的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter自定义签名插件custom_signature的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中集成并使用custom_signature插件的一个代码案例。custom_signature插件允许你创建一个自定义签名面板,用于捕捉用户的签名。

步骤1:添加依赖

首先,你需要在你的pubspec.yaml文件中添加custom_signature依赖。

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

运行flutter pub get来安装依赖。

步骤2:导入插件

在你的Dart文件中导入custom_signature插件。

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

步骤3:创建签名面板

下面是一个完整的Flutter应用示例,展示了如何使用custom_signature插件来捕捉用户签名。

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

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

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

class _SignaturePageState extends State<SignaturePage> {
  final GlobalKey<CustomSignatureState> _signatureKey = GlobalKey();
  Uint8List? _signatureData;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Signature Example'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: <Widget>[
            Expanded(
              child: CustomSignature(
                key: _signatureKey,
                backgroundColor: Colors.white,
                penColor: Colors.black,
                strokeWidth: 5.0,
                onSaved: (Uint8List data) {
                  setState(() {
                    _signatureData = data;
                  });
                },
              ),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () {
                // 获取签名数据
                final CustomSignatureState? signatureState = _signatureKey.currentState;
                if (signatureState != null) {
                  Uint8List? data = signatureState.getData();
                  // 在这里你可以处理签名数据,比如保存到服务器
                  print('Signature data: $data');
                }
              },
              child: Text('Get Signature Data'),
            ),
            if (_signatureData != null) ...[
              SizedBox(height: 20),
              Text('Signature Preview:'),
              SizedBox(height: 10),
              Image.memory(_signatureData!),
            ],
          ],
        ),
      ),
    );
  }
}

代码解释

  1. 依赖添加:在pubspec.yaml文件中添加custom_signature依赖。
  2. 导入插件:在Dart文件中导入custom_signature
  3. 创建签名面板
    • 使用CustomSignature小部件创建一个签名面板。
    • 设置背景颜色、笔触颜色、笔触宽度等属性。
    • 使用onSaved回调获取签名数据。
  4. 获取和处理签名数据
    • 使用_signatureKey.currentState!.getData()方法获取签名数据。
    • 显示签名预览图像。

以上代码展示了如何在Flutter应用中集成并使用custom_signature插件来捕捉和处理用户签名。如果你有任何特定需求或问题,请随时告知!

回到顶部