From 355fe96b2a4c7821256d9e8828d2cb9539904878 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期四, 05 五月 2022 19:29:16 +0800 Subject: [PATCH] 功能完善 --- flutter_module/lib/ui/widget/verification_box.dart | 37 +++++++++++++++++++++++-------------- 1 files changed, 23 insertions(+), 14 deletions(-) diff --git a/flutter_module/lib/ui/widget/verification_box.dart b/flutter_module/lib/ui/widget/verification_box.dart index 81bfd2b..9008e8d 100644 --- a/flutter_module/lib/ui/widget/verification_box.dart +++ b/flutter_module/lib/ui/widget/verification_box.dart @@ -9,9 +9,10 @@ ///SOS闆疯揪鎵弿View class VerificationBox extends StatefulWidget { final int length; + final double width; final VerificationBoxController controller; - VerificationBox(this.length, this.controller); + VerificationBox(this.length, this.controller, {required this.width}); @override _VerificationBoxState createState() => _VerificationBoxState(); @@ -19,7 +20,7 @@ class _VerificationBoxState extends State<VerificationBox> with WidgetsBindingObserver { - TextEditingController _controller = TextEditingController(); + final TextEditingController _controller = TextEditingController(); String content = ""; final FocusNode _focusNode = FocusNode(); bool isKeyboardActived = false; @@ -27,8 +28,8 @@ @override void initState() { super.initState(); + WidgetsBinding.instance!.addObserver(this); widget.controller.controller = _controller; - _controller.addListener(() { setState(() { print("listener:"); @@ -44,18 +45,20 @@ } }); }); - WidgetsBinding.instance!.addObserver(this); + } @override void dispose() { super.dispose(); + WidgetsBinding.instance!.removeObserver(this); isKeyboardActived = false; _focusNode.unfocus(); } @override void didChangeMetrics() { + print("didChangeMetrics isKeyboardActived:$isKeyboardActived"); super.didChangeMetrics(); WidgetsBinding.instance!.addPostFrameCallback((_) { // 褰撳墠鏄畨鍗撶郴缁熷苟涓斿湪鐒︾偣鑱氱劍鐨勬儏鍐典笅 @@ -75,6 +78,7 @@ Widget build(BuildContext context) { return GestureDetector( onTap: () { + print("鐐瑰嚮浜嬩欢锛岃緭鍏ユ鑾峰彇鐒︾偣:${_focusNode.hasFocus}"); FocusScope.of(context).requestFocus(_focusNode); }, child: Stack( @@ -91,8 +95,8 @@ RegExp("[a-zA-Z]|[0-9]")), LengthLimitingTextInputFormatter(widget.length), ], - style: TextStyle(fontSize: 1, color: Colors.transparent), - decoration: InputDecoration( + style: const TextStyle(fontSize: 1, color: Colors.transparent), + decoration: const InputDecoration( border: InputBorder.none, focusedBorder: InputBorder.none, focusColor: Colors.transparent), @@ -100,10 +104,12 @@ focusNode: _focusNode, autofocus: false, controller: _controller)), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: getItems(), - ) + SizedBox( + width: widget.width, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: getItems(), + )) ], )); } @@ -118,10 +124,13 @@ } Widget getItem(int index) { + double width = (widget.width - 10 * widget.length - 1) / widget.length; + + //TODO 浼犲叆瀹藉害璁$畻 return Container( alignment: Alignment.center, - width: 36, - height: 45, + width: width, + height: width * 1.25, decoration: BoxDecoration( color: const Color(0xFFEFEFEF), borderRadius: BorderRadius.circular(13)), @@ -139,10 +148,10 @@ class VerificationBoxController { VerificationBoxController(); - TextEditingController? _controller = null; + TextEditingController? _controller; set controller(TextEditingController? controller) { - this._controller = controller; + _controller = controller; } String get text => (_controller == null ? "" : _controller!.text); -- Gitblit v1.8.0