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

如何解决Flutter中Pinput组件的OTP自动填充失效问题?

修复Flutter Pinput包OTP自动填充失效问题

下面是针对你遇到的OTP自动填充失效问题的具体修复步骤:

  • 初始化SmsRetriever监听
    页面初始化时必须启动短信监听,否则SmsRetrieverApi无法捕获短信。在页面的initState中添加以下代码:

    @override
    void initState() {
      super.initState();
      _startSmsListener();
    }
    
    void _startSmsListener() async {
      await SmsAutoFill().listenForCode;
    }
    

    同时确保pubspec.yaml中引入了依赖包:

    sms_autofill: ^2.3.0 # 使用最新稳定版本
    
  • 配置AndroidManifest广播接收器
    在android/app/src/main/AndroidManifest.xml的<application>标签内添加广播接收器配置:

    <receiver
        android:name="com.github.flutterme.smsautofill.SmsAutoFillBroadcastReceiver"
        android:exported="true">
        <intent-filter>
            <action android:name="com.google.android.gms.auth.api.phone.SMS_RETRIEVED" />
        </intent-filter>
    </receiver>
    

    另外必须验证签名哈希:用以下命令生成调试/正式签名的哈希值,添加到Firebase控制台的项目设置中:

    keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | xxd -p | tr -d "[:space:]" | echo -n 你的应用包名 `cat` | sha256sum | tr -d "[:space:]-" | xxd -r -p | base64 | cut -c1-11
    
  • 确保短信格式符合要求
    Firebase发送的OTP短信必须包含签名哈希尾缀,格式示例:

    你的验证码是:123456。

    FA+9qCX9VSu
    最后一行的字符串是你的应用签名哈希对应的标识,Firebase在配置正确签名哈希后会自动添加该内容,缺失则无法被SmsRetriever识别。

  • 修正代码语法与资源释放
    你的Pinput代码中controller: _pinPutController末尾缺少逗号,先补上避免语法错误:

    Pinput(
      focusNode: focusNode,
      androidSmsAutofillMethod: AndroidSmsAutofillMethod.smsRetrieverApi,
      length: 6,
      defaultPinTheme: defaultPinTheme,
      listenForMultipleSmsOnAndroid: true,
      controller: _pinPutController, // 补上缺失的逗号
      onChanged: ((value) => print(value)),
      onCompleted: (pin) async {
        // 原有验证逻辑
      },
    ),
    

    同时在页面销毁时释放资源:

    @override
    void dispose() {
      focusNode.dispose();
      _pinPutController.dispose();
      SmsAutoFill().unregisterListener();
      super.dispose();
    }
    
  • 检查版本兼容性
    确保pinput与sms_autofill使用最新稳定版,避免版本冲突导致的功能异常,建议pinput使用^3.0.0以上版本。

内容的提问来源于stack exchange,提问作者F sam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:25:30