You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 13:50:13