Flutter是谷歌的移动UI框架,能够快速在iOS和Android上构建高质量的原生用户界面。git
IT界著名的尼古拉斯·高尔包曾说:轮子是IT进步的阶梯!热门的框架千篇一概,好用轮子万里挑一!Flutter做为这两年开始崛起的跨平台开发框架,其第三方生态相比其余成熟框架还略有不足,但轮子的数量也已经不少了。本系列文章挑选平常app开发经常使用的轮子分享出来,给你们提升搬砖效率,同时也但愿flutter的生态愈来愈完善,轮子愈来愈多。github
本系列文章准备了超过50个轮子推荐,工做缘由,尽可能每1-2天出一篇文章。markdown
tip:本系列文章合适已有部分flutter基础的开发者,入门请戳:flutter官网app
dependencies: passcode_screen: ^1.0.2 复制代码
import 'package:passcode_screen/passcode_screen.dart'; import 'package:passcode_screen/circle.dart';//如须要自定义密码圆点UI时需引入 import 'package:passcode_screen/keyboard.dart';//如须要自定义键盘UI时需引入 复制代码
使用 PasscodeScreen 构建密码锁屏界面,参数配置以下:框架
PasscodeScreen( title: "请输入锁屏密码", passwordEnteredCallback: _onPasscodeEntered,//密码输入后的处理方法 cancelLocalizedText: '取消',//取消按钮文字 deleteLocalizedText: '删除',//删除按钮文字 shouldTriggerVerification: _verificationNotifier.stream,//控制器通知 circleUIConfig: CircleUIConfig(//自定义密码圆点ui 可不填 borderColor: color, fillColor: color, circleSize: 30 ), keyboardUIConfig: KeyboardUIConfig(digitBorderWidth: 2, primaryColor: color),//自定义键盘ui 可不填 backgroundColor: Colors.black.withOpacity(0.8),//背景透明度 cancelCallback: _onPasscodeCancelled,//取消按钮回调 ) 复制代码
点击按钮弹出锁屏界面,输入123456后解锁:async
1.在按钮事件中,push锁屏界面ide
openLockScreen(){ Navigator.push(context,PageRouteBuilder(opaque: false,pageBuilder: (context, animation, secondaryAnimation) { return PasscodeScreen( title: "请输入锁屏密码", passwordEnteredCallback: _onPasscodeEntered,//密码输入后的处理方法 cancelLocalizedText: '取消',//取消按钮文字 deleteLocalizedText: '删除',//删除按钮文字 shouldTriggerVerification: _verificationNotifier.stream,//控制器通知 circleUIConfig: CircleUIConfig(//自定义密码圆点ui 可不填 borderColor: color, fillColor: color, circleSize: 30 ), keyboardUIConfig: KeyboardUIConfig(digitBorderWidth: 2, primaryColor: color),//自定义键盘ui 可不填 backgroundColor: Colors.black.withOpacity(0.8),//背景透明度 cancelCallback: _onPasscodeCancelled,//取消按钮回调 ); })); } 复制代码
2.定义控制器通知oop
final StreamController<bool> _verificationNotifier = StreamController<bool>.broadcast(); //需引入 import 'dart:async'; 复制代码
3.密码输入后的处理方法 _onPasscodeEntered 与点击取消处理方法 _onPasscodeCancelledui
_onPasscodeEntered(String enteredPasscode) { bool isValid = '123456' == enteredPasscode; _verificationNotifier.add(isValid); } _onPasscodeCancelled(){ print("点击取消"); } 复制代码
4.在页面销毁时注销控制器spa
@override void dispose() { _verificationNotifier.close(); super.dispose(); } 复制代码