gpt4 book ai didi

Flutter:删除所有 SnackBars

转载 作者:行者123 更新时间:2023-12-04 12:59:15 28 4
gpt4 key购买 nike

在我的应用程序中,可能(并且有意!)多个 SnackBar元素被创建。这些 SnackBar元素排队并一个接一个地显示,这一切都很好。但是,如果我转到不同的屏幕然后返回(所以 pushpop 一条路线)所有 SnackBar元素还在。

所以我想删除所有SnackBar在插入路线时。

我试着数我的 SnackBar元素和调用 scaffoldKey.currentState.removeCurrentSnackBar()在以下位置多次:

  • 之前 Navigator.push()但是,这是有效的,因为我有多个点可以推送一些我想使用一些回调的东西。
  • didPushRoute()来自 WidgetsBindingObserver ,然而,即使在注册观察者之后,这个方法也不会被调用。 ( ChangeAppLifecycleState() 被调用所以注册似乎不是完全错误?)
  • dispose() .这实际上产生了我想要的行为,但会引发来自 AnimatedBuilder 的异常(异常文本:“setState() or markNeedsBuild() called during build. ”),我想避免这种情况,即使动画库似乎捕捉到了这些。

  • 如果一切都失败了,我想我可以只包装 Navigator.push()在也清除 SnackBar 的辅助函数中排队,但我希望会有更优雅的方式。

    最佳答案

    您可以使用它来删除 Flutetr2 中的 Snackbar ScaffoldMessenger.of(context).removeCurrentSnackBar(); 示例代码

    onPressed: () {
    ScaffoldMessenger.of(context).removeCurrentSnackBar();
    ScaffoldMessenger.of(context).showSnackBar(
    SnackBar(
    content: Text('New Snackbar'),
    ),
    );
    }

    关于Flutter:删除所有 SnackBars,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61160600/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com