#flutter #dart #dialog
Вопрос:
Я делаю push-уведомление в своем приложении flutter, обрабатывая его как на переднем плане, так и на заднем плане. Когда уведомление прослушивается, я хочу загрузить a dialog
до того, как сетевая операция будет полностью загружена. Итак, когда я нахожусь на переднем плане, диалоговое окно отображается нормально, но не появляется, когда я выхожу на передний план с заднего плана. Что может быть причиной этого?
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;
}
Ответ №1:
Я думаю, это потому, что, когда нужно выйти на передний план, метод не вызывается.
Попробуйте расширить класс с помощью WidgetsBindingObserver и переопределить
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
showRideOrder(...); //call your function
}
Убедитесь, что вы написали регистр переключения и назвали его в соответствующем случае