我具有底部导航栏的视图,当您按下导航栏项目时,新的路线就会被推送到视图中。
final navigatorKey = GlobalKey<NavigatorState>();
@override
Widget build(BuildContext context) => MaterialApp(
home: Scaffold(
key: _scaffoldKey,
body: _buildBody(context),
bottomNavigationBar: _buildBottomNavigationBar(context),
),
);
void routeToView(routeIndex) {
navigatorKey.currentState.pushNamed(pagesRouteFactories.keys.toList()[routeIndex]);
}
我想防止在当前视图上推送相同的路由。我想将当前路线与我们尝试推入的新路线进行比较,如果相同则忽略推入路线。
如果要尝试的路线与我相同,我想将视图滚动到顶部
任何想法。
答案 0 :(得分:3)
NavigatorState没有公开用于获取路径的API 当前路线,并且Route不公开用于确定路线的API 路线的路径。路由可以是(通常是匿名的)。您可以 找出给定的路线是否在导航器堆栈的顶部 现在使用isCurrent方法,但这对于 您的用例。
https://stackoverflow.com/a/46498543/2554745
这是我能想到的最接近的解决方案:
Navigator.of(context).pushNamedAndRemoveUntil(
"newRouteName",
(route) => route.isCurrent
? route.settings.name == "newRouteName"
? false
: true
: true);
如果路由名称为“ newRouteName”,则会弹出当前路由,然后推送新的路由,否则不会弹出任何内容。
答案 1 :(得分:0)
这对我有用:
@component('mail::message')
{{ $mailData['title'] }}
The body of your message.
@component('mail::button', ['url' => $mailData['url']])
Button Text
@endcomponent
Thanks,<br>
{{ config('app.name') }}
@endcomponent