SnackBar在Flutter中无法显示
SnackBar在Flutter中无法显示
这个问题已经有了答案:
Scaffold.of() called with a context that does not contain a Scaffold
我似乎无法弄清楚为什么它不起作用。当我点击按钮时,我应该会得到一个 snackbar。有任何帮助吗?在 Flutter API 上的代码片段却能正常工作。
void main() => runApp(SnackBarDemo()); class SnackBarDemo extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: SafeArea( child: Scaffold( body: Center( child: InkWell( // When the user taps the button, show a snackbar. onTap: () { Scaffold.of(context).showSnackBar(SnackBar( content: Text('Tap'), )); }, child: Container( padding: EdgeInsets.all(12.0), child: Text('Flat Button'), ), ), ) ) ) ); } }
admin 更改状态以发布 2023年5月22日
您正在同级小部件中调用showSnackbar
,因此您发送到此方法的上下文不包含Scaffold
。
解决方案:将此小部件下调到Scaffold
的下一级:
void main() => runApp(SnackBarDemo());
class SnackBarDemo extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: SafeArea( child: Scaffold( body: Center( child: Builder( builder: (context)=>InkWell( // When the user taps the button, show a snackbar. onTap: () { Scaffold.of(context).showSnackBar(SnackBar( content: Text('Tap'), )); }, child: Container( padding: EdgeInsets.all(12.0), child: Text('Flat Button'), ), ), ), ) ) ) ); } }