Flutter运行报checkPlatformOverride错误 接入speech_to_text后启动崩溃
可行解决思路
你遇到的报错属于表层日志,底层触发原因通常是语音识别相关的权限缺失、初始化逻辑异常或者运行环境不兼容,按以下顺序排查即可:
1. 补全对应平台的权限配置
这是该包最常见的崩溃诱因,两类平台都需要单独配置权限:
- Android端:打开
android/app/src/main/AndroidManifest.xml文件,在manifest标签下添加以下权限声明:
同时打开<uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.INTERNET" />android/app/build.gradle,把minSdkVersion调整为21及以上,该包不支持21以下的安卓版本。 - iOS端:打开
ios/Runner/Info.plist文件,在dict标签下添加权限说明:<key>NSMicrophoneUsageDescription</key> <string>需要使用麦克风进行语音输入</string> <key>NSSpeechRecognitionUsageDescription</key> <string>需要使用语音识别能力转换语音内容</string>
2. 修正语音服务调用逻辑
你当前的逻辑缺少状态校验,初始化失败、重复调用监听接口都会触发崩溃,修改activateStt方法如下:
//this is called once the speech button is pressed activateStt() async { // 未初始化成功先重试初始化 if (!_speechEnabled) { _speechEnabled = await _speechToText.initialize(); if (!_speechEnabled) return; } // 正在监听时点击就停止监听,避免重复调用 if (_speechToText.isListening) { await _speechToText.stop(); } else { await _speechToText.listen(onResult: _onSpeechResult); } setState(() {}); }
3. 排查运行环境兼容问题
- 大部分安卓模拟器默认未内置语音识别服务,直接运行会崩溃,建议先使用真机测试,如果一定要用模拟器需要手动安装Google语音服务套件
- 确认
pubspec.yaml中引入的speech_to_text版本和你的Flutter版本兼容,Flutter 3.0及以上版本建议使用该包6.0以上的稳定版 - 所有配置修改完成后,再次执行
flutter clean+flutter pub get重新构建项目即可
内容的提问来源于stack exchange,提问作者Marko
相关产品推荐
相关产品推荐

