每次推送新路线时,都会再次显示最后的 Flutter SnackBar

Posted

技术标签:

【中文标题】每次推送新路线时,都会再次显示最后的 Flutter SnackBar【英文标题】:Last Flutter SnackBar is shown again each time I push a new route 【发布时间】:2020-11-12 13:30:44 【问题描述】:

我是 Flutter 开发的新手,我正在开发一个简单的应用程序,它显示 SnackBars 以通知用户与服务器通信的进度。 一切似乎都正常,但是在显示小吃店后,当我推送新路线时,最新的小吃店会重新出现,而我没有调用它。 一旦 SnackBar 显示并消失,是否必须做一些事情来清理并避免该 SnackBar 再次出现?

【问题讨论】:

你能贴一些代码吗? 你找到解决办法了吗? 【参考方案1】:

你可以这样使用,

_scaffoldKey.currentState.removeCurrentSnackBar();**<--this close previous already open snackbar-->**
_scaffoldKey.currentState.showSnackBar(  **<--this open new same time-->**
   SnackBar(
     content: Text('Processing Data'),
   ),
 );

_scaffoldKey ;

Create key

Using key

【讨论】:

【参考方案2】:

这个问题似乎与我使用来自两个不同库的 SnackBars 的事实有关,其中一个是 ez_flutter,另一个是 fluter material

【讨论】:

【参考方案3】:

隐藏小吃栏:-

Scaffold.of(context).hideCurrentSnackBar();

或者如果你定义了全局键然后:-

_scaffoldKey.currentState.removeCurrentSnackBar();

【讨论】:

我已经阅读了这些可能性,但这里的问题是,当我导航到新屏幕时,小吃栏已经隐藏或不可见,它只是再次显示。您何时建议我执行此方法以避免在推送新路线时显示它? SnackBars 展示后不应该被丢弃吗?他们是吗?如果是这样,他们为什么在推新路线时再次出现?我已经尝试在推送新路线之前执行 Scaffold.of(context).hideCurrentSnackBar() 并且仍然没有效果。

以上是关于每次推送新路线时,都会再次显示最后的 Flutter SnackBar的主要内容,如果未能解决你的问题,请参考以下文章

打开 PWA 时收到推送事件时不显示通知

有没有办法获得被推送的路线的上下文以在其中显示小吃店?

每次在 firebase 实时数据库中添加新孩子时使用 firebase 函数发送推送通知不起作用

每次将新元素推入列表时,列表的 ReactJS 渲染时间都会增加

Qt 文本浏览器不实时显示

Flutter 导航,重新打开页面而不是再次推送