Flutter实现语言选择弹窗时出现builder参数必填及Utils未定义报错
报错1:The named parameter 'builder' is required, but there's no corresponding argument
该报错原因是Flutter新版本中showDialog方法已废弃child参数,改为必填的builder参数,修改后代码如下:
void _languageCheck() async { SharedPreferences prefs = await SharedPreferences.getInstance(); final firstRun = prefs.getBool("firstRunLanguage"); (firstRun ?? false) ? () {} : await showDialog( barrierDismissible: false, context: context, // 替换原有child参数为builder builder: (context) => AlertDialog(content: LanguageDialog()), ); await prefs.setBool('firstRunLanguage', true); }
报错2:Undefined name 'Utils'
该报错是代码中调用的Utils类未被正确识别,按两种场景处理:
- 若你已经单独定义了
Utils类和getLanguagesList方法,只需在当前代码文件头部导入对应文件即可,示例导入格式:import '你的文件路径/utils.dart'; // 替换为Utils类所在的实际文件路径 - 若你还未定义
Utils类,需要先实现对应的工具类和方法,示例实现参考:class Utils { static List<Map<String, dynamic>> getLanguagesList(BuildContext context) { // 可自行替换为实际需要的语言配置 return [ {"code": "zh", "name": "简体中文"}, {"code": "en", "name": "English"}, ]; } }
内容的提问来源于stack exchange,提问作者Rushika Pawar
相关产品推荐
相关产品推荐

