使用top_snackbar_flutter 3.0.0时BuildContext无法赋值给OverlayState问题求助
解决top_snackbar_flutter 3.0.0参数类型不匹配问题
这个错误是因为top_snackbar_flutter 3.0.0版本更新了API,showTopSnackBar的第一个参数不再接受BuildContext,而是需要传入OverlayState。以下是两种可行的解决方法:
方法一:直接从Context获取OverlayState
将原来的context替换为Overlay.of(context),修改后的代码如下:
showTopSnackBar( Overlay.of(context), CustomSnackBar.success( message: "Good job, your release is successful. Have a nice day", ), );
方法二:使用GlobalKey获取OverlayState(适用于特殊场景)
如果在某些无法直接通过当前context获取Overlay的场景(比如弹窗内部),可以通过全局的NavigatorKey来获取:
- 先定义一个全局的
GlobalKey<NavigatorState>:
final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
- 在你的
MaterialApp中配置这个key:
MaterialApp( navigatorKey: navigatorKey, // 其他配置项... );
- 调用
showTopSnackBar时使用这个key获取OverlayState:
showTopSnackBar( navigatorKey.currentState!.overlay!, CustomSnackBar.success( message: "Good job, your release is successful. Have a nice day", ), );
内容的提问来源于stack exchange,提问作者Kiran Jadhav
相关产品推荐
相关产品推荐

