Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 当我从背景颤振进入前景时,showDialog不可见_Flutter_Dart_Dialog - Fatal编程技术网

Flutter 当我从背景颤振进入前景时,showDialog不可见

Flutter 当我从背景颤振进入前景时,showDialog不可见,flutter,dart,dialog,Flutter,Dart,Dialog,我在我的颤振应用程序上做推送通知,在前台和后台处理它。点击通知时,我想在网络操作完全加载之前加载一个对话框。因此,当我在前台时,对话框显示得很好,但当我从后台进入前台时,对话框不会出现。这可能是什么原因 void showRideOrder(String newOrder) async { orderIdString = orderId = newOrder; print("new order here" + orderId); print(&qu

我在我的颤振应用程序上做推送通知,在前台和后台处理它。点击通知时,我想在网络操作完全加载之前加载一个
对话框。因此,当我在前台时,对话框显示得很好,但当我从后台进入前台时,对话框不会出现。这可能是什么原因

  void showRideOrder(String newOrder) async {
    orderIdString = orderId = newOrder;
    print("new order here" + orderId);
    print("fetching info");
    assetsAudioPlayer.open(
      Audio('sounds/alert.mp3'),
    );
    assetsAudioPlayer.play();
  
   showDialog( //not showing when coming in from the background
      barrierDismissible: false,
      context: context,
      builder: (BuildContext builder_context) =>
          CustomProgressDialog(status:'Fetching details',),);

    Provider.of<MainBloc>(context, listen: false).
    fetchRideInfo(context, orderId).then((value){
      print("ride order fetched. closing dialog");
     Navigator.pop(context);
      Navigator.push(
        context,
        MaterialPageRoute(builder: (context) =>
            RideRequestPage(orderId: orderId)),
      );
      orderIdString =null;
    }).catchError((error) {
      Navigator.pop(context);
      AlertManager.showToast(error.toString());
    });
    orderIdString = null;
  }
void showRideOrder(字符串newOrder)异步{
orderIdString=orderId=newOrder;
打印(“此处新订单”+订单ID);
打印(“获取信息”);
assetsAudioPlayer.open(
音频('sounds/alert.mp3'),
);
assetsAudioPlayer.play();
showDialog(//从后台进入时不显示
禁止:错误,
上下文:上下文,
生成器:(BuildContext生成器_context)=>
CustomProgressDialog(状态:'Fetching details',),);
Provider.of(上下文,listen:false)。
fetchRideInfo(上下文,orderId)。然后((值){
打印(“获取骑乘订单。关闭对话框”);
Navigator.pop(上下文);
导航器。推(
上下文
MaterialPage路线(生成器:(上下文)=>
RideRequestPage(orderId:orderId)),
);
orderIdString=null;
}).catchError((错误){
Navigator.pop(上下文);
AlertManager.showToast(error.toString());
});
orderIdString=null;
}

我认为这是因为在前台,该方法没有被调用

尝试使用WidgetsBindingObserver扩展类并重写

@override
  void didChangeAppLifecycleState(AppLifecycleState state) {
    showRideOrder(...);   //call your function
  }
确保您编写了switch case,并在适当的情况下调用它