You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用原生SnackBar显示Toast报错:showSnackBar方法未定义

解决Flutter中ScaffoldState无showSnackBar方法的错误

错误信息

The method 'showSnackBar' isn't defined for the type 'ScaffoldState'.
Try correcting the name to the name of an existing method, or defining a method named 'showSnackBar'

用户实现代码

//Show toaster
showToast(){
  Scaffold.of(context).showSnackBar(SnackBar(
    content: Text("Sending Message"),
  ));
}

修复方案

这个错误是因为Flutter版本迭代后,Scaffold.of(context)不再提供showSnackBar方法,官方将SnackBar的管理移到了ScaffoldMessenger组件中,以下是两种可行的修复方式:

方式一:直接使用ScaffoldMessenger

修改后的代码如下:

//Show toaster
showToast(){
  ScaffoldMessenger.of(context).showSnackBar(SnackBar(
    content: Text("Sending Message"),
  ));
}

方式二:使用GlobalKey(适用于context无法直接访问ScaffoldMessenger的场景)

  1. 先定义一个GlobalKey:
final GlobalKey<ScaffoldMessengerState> _scaffoldMessengerKey = GlobalKey<ScaffoldMessengerState>();
  1. 在Scaffold组件中绑定这个key:
Scaffold(
  key: _scaffoldMessengerKey,
  // 其他页面内容
)
  1. 通过key调用showSnackBar:
//Show toaster
showToast(){
  _scaffoldMessengerKey.currentState?.showSnackBar(SnackBar(
    content: Text("Sending Message"),
  ));
}

内容的提问来源于stack exchange,提问作者Cliff Odebala Clarke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 05:52:10