Flutter TypeAheadField onSuggestionSelected真机无响应,模拟器正常
解决flutter_typeahead在小米11 Ultra真机上点击无响应的问题
可能的原因及修复方案
1. 处理触摸事件拦截问题
小米部分机型的系统或第三方应用可能存在触摸事件拦截情况,尝试用GestureDetector包裹TypeAheadField,强制捕获触摸事件:
GestureDetector( behavior: HitTestBehavior.opaque, onTap: () {}, child: TypeAheadField( // 你的原有配置 ), )
2. 调整TypeAheadField的交互参数
真机上可能因焦点变化导致弹窗提前隐藏,修改hideOnUnfocus、hideOnKeyboardHide参数:
TypeAheadField( hideOnUnfocus: false, hideOnKeyboardHide: false, // 其他配置项 )
3. 检查选项项的点击绑定逻辑
确认自定义itemBuilder返回的Widget正确绑定了点击回调,确保选中逻辑能触发:
itemBuilder: (context, suggestion) { return InkWell( onTap: () { _controller.close(); setState(() { selectedCountry = suggestion; // 执行加载省份列表的逻辑 }); }, child: ListTile(title: Text(suggestion.name)), ); },
4. 适配高刷新率机型触控响应
小米11 Ultra为高刷新率机型,可在MaterialApp中配置scrollBehavior优化触控:
MaterialApp( scrollBehavior: MaterialScrollBehavior().copyWith( dragDevices: {PointerDeviceKind.touch, PointerDeviceKind.mouse}, ), // 其他配置 )
5. 清理缓存并重建项目
- 执行命令
flutter clean清理项目缓存 - 执行
flutter pub get重新拉取依赖 - 卸载真机上的旧应用后,重新安装调试包
内容的提问来源于stack exchange,提问作者reza kia
相关产品推荐
相关产品推荐

