diff --git a/lib/main.dart b/lib/main.dart index 43aa3ff..ca281bf 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -54,7 +54,7 @@ void main() async { // useEncrypt: true ); // 设置当前是否为测试环境 - bool isDebug = true; + bool isDebug = false; AppConfig.setDebug(isDebug); await Hive.initFlutter(); diff --git a/lib/pages/user/user_set_password_varcode.dart b/lib/pages/user/user_set_password_varcode.dart index f9c7631..5ec5906 100644 --- a/lib/pages/user/user_set_password_varcode.dart +++ b/lib/pages/user/user_set_password_varcode.dart @@ -1,6 +1,8 @@ import 'dart:async'; - +import 'package:recook/constants/header.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:pin_input_text_field/pin_input_text_field.dart'; import 'package:recook/base/base_store_state.dart'; import 'package:recook/constants/api.dart'; import 'package:recook/constants/header.dart'; @@ -9,21 +11,19 @@ import 'package:recook/manager/http_manager.dart'; import 'package:recook/manager/user_manager.dart'; import 'package:recook/models/base_model.dart'; import 'package:recook/widgets/custom_app_bar.dart'; -import 'package:recook/widgets/keyboard/CustomBoxPasswordFieldWidget.dart'; import 'package:recook/widgets/keyboard/keyboard_widget.dart'; import 'package:recook/widgets/keyboard/pay_password.dart'; import 'package:recook/widgets/toast.dart'; -class UserSetPasswordVarCode extends StatefulWidget{ +class UserSetPasswordVarCode extends StatefulWidget { @override State createState() { return _UserSetPasswordVarCodeState(); } - } -class _UserSetPasswordVarCodeState extends BaseStoreState{ - +class _UserSetPasswordVarCodeState + extends BaseStoreState { Timer _timer; String _countDownStr = "点击发送验证码"; bool _getCodeEnable = false; @@ -36,10 +36,13 @@ class _UserSetPasswordVarCodeState extends BaseStoreState _scaffoldKey = GlobalKey(); VoidCallback _showBottomSheetCallback; @override @@ -64,15 +67,17 @@ class _UserSetPasswordVarCodeState extends BaseStoreState setState(() {}), + decoration: BoxLooseDecoration( + gapSpace: 12, + radius: Radius.circular(4), + textStyle: TextStyle( + color: Colors.black, + fontSize: 24, + ), + strokeColorBuilder: + PinListenColorBuilder(Colors.grey, Colors.blue), + ), + inputFormatters: [ + LengthLimitingTextInputFormatter(4), + FilteringTextInputFormatter.digitsOnly, + ], + ), ), Container( - margin: EdgeInsets.only(top:15), - child: FlatButton( - textColor: AppColor.themeColor, - disabledTextColor: Color(0xff777777), - child: Text(_countDownStr, style: TextStyle(fontSize: ScreenAdapterUtils.setSp(15)),), - onPressed: _getCodeEnable ? - (){ - if (_cantSelected) return; - _cantSelected = true; - Future.delayed(Duration(seconds: 2), (){ - _cantSelected = false; - }); - _getVarCode(); - } - :null, - ) - ), + margin: EdgeInsets.only(top: 15), + child: FlatButton( + textColor: AppColor.themeColor, + disabledTextColor: Color(0xff777777), + child: Text( + _countDownStr, + style: TextStyle(fontSize: ScreenAdapterUtils.setSp(15)), + ), + onPressed: _getCodeEnable + ? () { + if (_cantSelected) return; + _cantSelected = true; + Future.delayed(Duration(seconds: 2), () { + _cantSelected = false; + }); + _getVarCode(); + } + : null, + )), GestureDetector( child: Container( margin: EdgeInsets.only(left: 15, right: 15, top: 30), height: 47, - color: pwdData.length == 4 ? AppColor.themeColor : Color(0xffd7d7d7), + color: _textEditingController.text.length == 4 + ? AppColor.themeColor + : Color(0xffd7d7d7), + // pwdData.length == 4 ? AppColor.themeColor : Color(0xffd7d7d7), child: Container( alignment: Alignment.center, - child: Text('确认', style: TextStyle(fontSize: ScreenAdapterUtils.setSp(17),color: Colors.white ),), + child: Text( + '确认', + style: TextStyle( + fontSize: ScreenAdapterUtils.setSp(17), + color: Colors.white), + ), ), ), - onTap: (){ - if(pwdData.length != 4){ - return; - } + onTap: () { + if (_textEditingController.text.length != 4) return; + // if (pwdData.length != 4) { + // return; + // } _verifySmsCode(); }, ) @@ -140,6 +195,7 @@ class _UserSetPasswordVarCodeState extends BaseStoreState[ Expanded( child: GestureDetector( - child: Container(color: Colors.white.withAlpha(0),), - onTap: (){ + child: Container( + color: Colors.white.withAlpha(0), + ), + onTap: () { Navigator.pop(_scaffoldKey.currentContext); }, ), ), - MyKeyboard(_onKeyDown, isShowTips: true, needCommit: true,), + MyKeyboard( + _onKeyDown, + isShowTips: true, + needCommit: true, + ), ], ), ); - // return new MyKeyboard(_onKeyDown, isShowTips: true, needCommit: true,); - }) + // return new MyKeyboard(_onKeyDown, isShowTips: true, needCommit: true,); + }) .closed .whenComplete(() { - if (mounted) { - setState(() { - if (_verifySms) { - _verifySmsCode(); + if (mounted) { + setState(() { + if (_verifySms) { + _verifySmsCode(); + } + _verifySms = false; + // re-enable the button + _showBottomSheetCallback = _showBottomSheet; + }); } - _verifySms = false; - // re-enable the button - _showBottomSheetCallback = _showBottomSheet; }); - } - }); } - void _onKeyDown(KeyEvent data){ + + void _onKeyDown(KeyEvent data) { if (data.isDelete()) { if (pwdData.length > 0) { pwdData = pwdData.substring(0, pwdData.length - 1); @@ -188,7 +251,7 @@ class _UserSetPasswordVarCodeState extends BaseStoreState listWidget = []; listWidget.add(Spacer()); for (var i = 0; i < boxCount; i++) { - if (data.length < i+1) { + if (data.length < i + 1) { listWidget.add(_boxWidget("")); - }else{ - listWidget.add(_boxWidget(data.substring(i, i+1))); + } else { + listWidget.add(_boxWidget(data.substring(i, i + 1))); } - } listWidget.add(Spacer()); return listWidget; } - _boxWidget(String str){ + _boxWidget(String str) { return Container( width: width, height: width, @@ -67,20 +63,24 @@ class CustomBoxPasswordFieldWidget extends StatelessWidget{ border: Border.all(color: Color(0xffaaaaaa), width: 1), ), child: Center( - child: str.isEmpty? Container() - :showString ? - Text(str, style: TextStyle(color: Colors.black,fontSize: ScreenAdapterUtils.setSp(20),),) - :Container( - width: 10, height: 10, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(5), - color: Colors.black - ), - ), + child: str.isEmpty + ? Container() + : showString + ? Text( + str, + style: TextStyle( + color: Colors.black, + fontSize: ScreenAdapterUtils.setSp(20), + ), + ) + : Container( + width: 10, + height: 10, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(5), + color: Colors.black), + ), ), ); } - } - - diff --git a/pubspec.lock b/pubspec.lock index 8abf408..1230146 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -871,6 +871,13 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "0.5.8" + pin_input_text_field: + dependency: "direct main" + description: + name: pin_input_text_field + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.3.0" platform: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index e93e942..262aca5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -218,6 +218,8 @@ dependencies: hive: ^1.4.4+1 hive_flutter: ^0.3.1 + pin_input_text_field: ^3.3.0 + dev_dependencies: flutter_test: sdk: flutter