Flutter:调用 setState() 方法后不显示 SnackBar

问题描述

我正在实施这个产品应用,用户可以在其中从他的愿望清单中添加产品并将其添加到他们的购物车中。一旦用户点击添加到购物车按钮,我想从屏幕上删除产品并显示“成功”Snackbar。 由于产品是从 FireBase Firestore 加载和显示的,我删除了该项目并调用 setState({}); 以便更新屏幕上的列表。问题是紧跟在 SnackBar 之后的 setState({}); 没有显示

我认为这是因为小部件树被重建,所以当前状态和上下文“消失了”。 我尝试在网上查找一些信息,但没有找到任何有用的信息。我还尝试使用 bool 标志做出一种解决方法,一旦用户使用 setState 单击“添加到购物车”按钮,该标志将设置一次,以显示 {{ 1}} 当小部件树被重建,然后将标志重新关闭但它没有工作。

我错过了什么?如何在调用 SnackBar显示 SnackBar

这是我的代码:(问题行标有 setState({})

slidable package installation

FIXME:

解决方法

就我而言,我在 build 方法完成构建小部件的过程之前调用了 setState 方法。

如果您在构建 error 完成之前显示 snack baralert 对话框以及在许多其他情况下,您可能会遇到此 method。所以在这种情况下使用下面的回调函数。

  WidgetsBinding.instance.addPostFrameCallback((_) {
        // add your snackbar code here
      });

或者你也可以使用 SchedulerBinding 来做同样的事情。

SchedulerBinding.instance.addPostFrameCallback((_) {

  // add your code here of snackbar.

});

或者你也可以试试这个(我不确定这个)

if(mounted){
  //add your code here of snackbar
}

CREDITS