Flutter使用otp_text_field:^1.1.3输入首个验证码时崩溃(空指针异常)
解决otp_text_field输入首字符时的空值崩溃问题
针对使用otp_text_field: ^1.1.3时输入第一个字符触发Null check operator used on a null value崩溃的问题,提供以下几种解决方案:
方案一:升级插件版本
该版本属于较早期版本,存在已知的空安全相关Bug,后续版本已修复此类问题。在pubspec.yaml中更新插件版本至最新稳定版:
dependencies: otp_text_field: ^1.1.6 # 或更高版本
执行flutter pub get更新依赖后重新运行项目。
方案二:手动添加OTP控制器(适配旧版本)
若暂时无法升级插件,可手动初始化OTPFieldController并绑定到输入组件,避免内部空值引用:
class _PageState extends State<OTPPage> { late OTPFieldController _otpController; @override void initState() { super.initState(); _otpController = OTPFieldController(); // 初始化控制器 } @override Widget build(BuildContext context) { return Scaffold( // ... 其他代码 body: Column( children: [ // ... 其他组件 Center( child: OTPTextField( controller: _otpController, // 添加控制器 length: 4, width: MediaQuery.of(context).size.width - 50, fieldWidth: 50, style: const TextStyle(fontSize: 17), textFieldAlignment: MainAxisAlignment.spaceAround, fieldStyle: FieldStyle.box, outlineBorderRadius: 10, onCompleted: (pin) { widget.con.OTP = pin; }, ), ), ], ), ); } }
方案三:显式设置输入框样式(避免主题依赖空值)
部分情况下,插件会依赖App主题的默认样式属性,若主题中相关属性为null会触发崩溃。可显式设置输入框的边框颜色等样式:
OTPTextField( // ... 其他属性 enabledBorderColor: Colors.grey, focusedBorderColor: Colors.blue, // 根据需要添加其他样式属性 )
内容的提问来源于stack exchange,提问作者Esai
相关产品推荐
相关产品推荐

