likes
comments
collection
share

Flutter Widget 之ScaffoldMessenger

作者站长头像
站长
· 阅读数 76

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

Flutter Widget 之ScaffoldMessenger

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

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

Flutter Widget 之ScaffoldMessenger

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

Flutter Widget 之ScaffoldMessenger

若你想使用这个工具,你只需要用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,他们仍会看到该通知。最棒的是你不用自行添加

Flutter Widget 之ScaffoldMessenger

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

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

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

转载自:https://juejin.cn/post/7168701259141578783
评论
请登录