我在应用程序上使用firebase_messaging设置了推送通知。当应用程序通过推送通知从终止状态打开时,我导航到特定路线(ProductPage(,按下后退按钮后,我会看到黑屏,因为导航堆栈上没有路线
当我按下应用程序栏上的后退按钮或触发安卓设备上的硬件后退按钮时,我如何让应用程序导航到初始路线,而不是看到黑屏?
我尝试使用WillPopScope
小部件的onWillPop
回调,但回调完全退出了应用程序,而不是导航到新的路由。
class ProductPage extends StatefulWidget {
@override
_ProductPageState createState() => _ProductPageState();
}
class _ProductPageState extends State<ProductPage> {
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () async {
Navigator.pushReplacementNamed(context,"homePage");
return false;
},
child: Scaffold(appBar: AppBar(title: Text("Product Page"),),));
}
}
onMessageOpenedApp回调:
FirebaseMessaging.onMessageOpenedApp.listen((message) {
print("ON MESSAGE OPENED");
Navigator.pushNamed(context,"productsPage");
});
预期的路由行为与下面的视频非常接近。从应用程序的快速操作中考虑此导航,设置应用程序没有在后台运行。我点击一个快速动作,导航到一个特定的屏幕,然后做出后退按钮手势或按下应用程序栏上的后退按钮,导航到应用程序的主页。
预期路由
您可以尝试像这里一样保存一个backback,并在用户通过推送通知输入时手动添加它
尝试在此状态下调试您的应用程序。我的猜测是,你没有通过推送通知打开应用程序的完整背景。
也许这会有所帮助:https://medium.com/androiddevelopers/multiple-back-stacks-b714d974f134