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,并在适当的情况下调用它