Dart 如何在flatter中navigator.pop(上下文)之后显示snackbar?

Dart 如何在flatter中navigator.pop(上下文)之后显示snackbar?,dart,flutter,navigator,snackbar,Dart,Flutter,Navigator,Snackbar,我们需要关闭一个屏幕并打开第二个屏幕。并在第一个屏幕的第二个屏幕上显示snackbar 我尝试使用Navigator.push,但此屏幕已打开,出现此错误 错误状态:流已被侦听 我建议你使用Flushbar插件来代替Snackbar,它很容易使用,而且它会处理所有事情,你可以在很大程度上自定义它。 Snackbar需要脚手架祖先才能工作,但 Flushbar没有,它自己处理所有额外的东西,并提供了大量的酷功能 我不确定我是否100%理解您的用例,但通过从屏幕返回结果并将参数传递给新路由,您基本上

我们需要关闭一个屏幕并打开第二个屏幕。并在第一个屏幕的第二个屏幕上显示snackbar

我尝试使用
Navigator.push
,但此屏幕已打开,出现此错误

错误状态:流已被侦听


我建议你使用Flushbar插件来代替Snackbar,它很容易使用,而且它会处理所有事情,你可以在很大程度上自定义它。 Snackbar需要脚手架祖先才能工作,但 Flushbar没有,它自己处理所有额外的东西,并提供了大量的酷功能


我不确定我是否100%理解您的用例,但通过从屏幕返回结果并将参数传递给新路由,您基本上可以解决任何场景

让我们举个例子。A是原始屏幕,然后你按下屏幕B。现在你看到B,在那里执行一些操作,弹出它,你回到屏幕A,你想显示一个小吃条

当您
弹出
时,您可以返回一个结果,并按照烹饪书中的说明从“父”屏幕处理该结果


当您收到结果时,您可以显示snackbar通知,或者(如果有第三个屏幕),您也可以。

谢谢!我不知道用户按下这个栏上的“OK”按钮后,我们如何才能关闭flushbar。也许你知道?flushbar有一个函数。dismission()。按ok键时,调用该函数中的函数,执行以下操作:
flushbar.disease()
;是的,我试过了。但它不起作用(我也不明白为什么。
flushbar=flushbar(标题:“Some”,消息:“text”,持续时间:持续时间(秒数:3),主按钮:FlatButton(onPressed:(){flushbar.disease();},child:text(“OK”),)…显示(上下文)
i';在我告诉您为什么它不起作用之前,我必须亲自尝试一下。我使用的是刷卡来解除而不是任何按钮操作。这显示解除后的刷新栏(本例中为5秒后),这不是大多数情况下(如果不是所有情况下)您想要的。希望您使用库/包来回答选择的解决方案
showSubmitRequestSnackBar(BuildContext context) async {

  Flushbar(
    flushbarPosition: FlushbarPosition.BOTTOM,
    message: "Request Successfully Saved",
    icon: Icon(
      Icons.info_outline,
      size: 28.0,
      color: Colors.red,
    ),
    backgroundColor: Colors.red,
    duration: Duration(seconds: 5),
    leftBarIndicatorColor: Colors.red,

  )
    ..show(context).then((r)=> Navigator.push(
        context, MaterialPageRoute(builder: (context) => ListPage(""))));
}