添加fluttertoast依赖后出现Overlay.maybeOf等编译错误,求解答
Fluttertoast依赖添加后编译错误的原因与解决办法
问题场景
在Flutter项目中添加fluttertoast依赖后,运行项目到设备时出现编译错误,错误信息如下:
/C:/src/flutter/.pub-cache/hosted/pub.dartlang.org/fluttertoast-8.1.3/lib/fluttertoast.dart:165:28: Error: Member not found: 'Overlay.maybeOf'. var _overlay = Overlay.maybeOf(context!); ^^^^^^^ /C:/src/flutter/.pub-cache/hosted/pub.dartlang.org/fluttertoast-8.1.3/lib/fluttertoast.dart:154:18: Error: The getter 'mounted' isn't defined for the class 'BuildContext'. - 'BuildContext' is from 'package:flutter/src/widgets/framework.dart' ('/C:/src/flutter/packages/flutter/lib/src/widgets/framework.dart'). framework.dart:1 Try correcting the name to the name of an existing getter, or defining a getter or field named 'mounted'. if (context?.mounted != true) { ^^^^^^^ 3 FAILURE: Build failed with an exception. * Where: Script 'C:\src\flutter\packages\flutter_tools\gradle\flutter.gradle' line: 1159
原本计划在错误或成功场景中通过fluttertoast显示提示(不使用Snackbar),但添加依赖后出现上述问题。
错误含义分析
Overlay.maybeOf找不到:fluttertoast 8.1.3版本使用了Flutter SDK较新版本中新增的Overlay.maybeOf方法,当前项目的Flutter SDK版本过低,不支持该API。BuildContext.mounted不存在:mounted属性是Flutter后期版本才添加到BuildContext类中的,旧版本Flutter里只有State类拥有mounted属性,因此低版本SDK无法识别该调用。
解决办法
方案1:升级Flutter SDK
将Flutter SDK升级到支持上述API的版本(建议至少Flutter 3.0及以上),执行以下命令:
flutter upgrade
升级完成后,重新运行项目即可。
方案2:降级fluttertoast依赖版本
打开项目中的pubspec.yaml文件,将fluttertoast的版本修改为与当前SDK兼容的旧版本(比如Flutter 2.x环境可使用8.0.8):
dependencies: fluttertoast: ^8.0.8
修改后执行以下命令更新依赖:
flutter pub get
之后重新运行项目。
方案3:替换为兼容更广的Toast库
如果不想修改SDK或依赖版本,可以换用其他兼容更多Flutter版本的Toast库,比如flutter_easy_toast或toastification,只需在pubspec.yaml中添加对应依赖即可。
内容的提问来源于stack exchange,提问作者Sourav Emon
相关产品推荐
相关产品推荐

