我正在使用Firebase向我的应用发送通知。我通过设置命名路由来设置基本路由。问题在于屏幕堆叠起来。因此,如果我的命名路线打开了屏幕B,并且我再次最小化了该应用程序并发送了另一个通知,那么新的屏幕B将被添加到树中。这意味着从屏幕B导航回到原来的屏幕B(而不是主屏幕)。
onGenerateRoute
onGenerateRoute: (RouteSettings settings) {
dynamic args = settings.arguments;
var routes = <String, WidgetBuilder>{
"/": (ctx) => MainLoader(),
"/userChat": (ctx) => ChatUserWidget(uid: args['uid'], userName: args['userName'], userPic: args['userPic']),
};
WidgetBuilder builder = routes[settings.name];
return MaterialPageRoute(builder: (ctx) => builder(ctx));
},
以及通知点击句柄
// also tried route.settings.name != '/userChat'
NAV_KEY.currentState.popUntil((route) => route is PageRoute);
NAV_KEY.currentState.pushNamed(
'/userChat',
arguments: {'uid': uid, 'userPic': pic, 'userName': name}
);
我想要的东西: 我希望新的命名路由替换先前的路由,以免它们堆叠在一起。我以为调用pop可以解决问题,但不会删除先前的路由。我想念什么?
希望您能提供帮助,谢谢!