Flutter Widget 之ScaffoldMessenger

你是否曾经尝试在导航栏之前通过SnackBar向你的用户显示消息,却发现SnackBar没有随用户进入新页面?

ezgif.com-gif-maker.gif

有的话,别担心,ScaffoldMessenger可以帮助你!

ScaffoldMessenger会以InheritedWidget的形态放在所有Scaffolds之上,每当初始化心的scaffold时,它会在树中查找ScaffoldMessenger祖先并订阅SnackBar事件

ezgif.com-gif-maker (1).gif

我是不知道你的想法,但任何订阅SnackBar事件的东西都是我的小部件

ezgif.com-gif-maker (2).gif

若你想使用这个工具,你只需要用ScaffoldMessenger.of(context)来替换 Scaffold.of(context)方法的调用

ScaffoldMessenger.of(context)

但是,假若你没有BuildContext,因为你在状态管理器的深处该怎么办呢?

这种情况下,请将密钥传给你的MaterialApp,然后用它访问ScaffoldMessenger

final _scaffoldKey = GlobalKey<ScaffoldMessengerState>();

MaterialApp(
    scaffoldMessengerKey: _scaffoldKey,
)

final ScaffoldMessengerState _scaffold = _scaffoldKey.currentState;

ScaffoldMessenger的其他部分都是一样的,你仍像以前一样使用showSnackBar,像以前一样传递SnackBar的值

scaffoldMessengerState.showSnackBar(
    ScackBar(...),
)

除了现在,你的用户在他们导航之前或在导航之后创建了一个SnackBar,他们仍会看到该通知。最棒的是你不用自行添加

ezgif.com-gif-maker (3).gif

ScaffoldMessenger小部件MaterialApp会提供给你。你只需使用它即可。

如果想了解有关ScaffoldMessenger的内容,或者关于Flutter的其他功能,请访问pu b.dev

原文翻译自视频:视频地址

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容