gpt4 book ai didi

flutter - 路由在 flutter 中没有按预期工作

转载 作者:行者123 更新时间:2023-12-03 03:32:37 25 4
gpt4 key购买 nike

在 Flutter 应用程序中,我在 main.dart 中有以下代码

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(),
initialRoute: '/login',
onGenerateRoute: Router.generateRoute,
);

我的 Router.dart 有以下代码

class Router {
static Route<dynamic> generateRoute(RouteSettings settings) {
print('setting.name: ${settings.name}');
switch (settings.name) {
case '/':
return MaterialPageRoute(builder: (_) => HomeView());
case '/login':
return MaterialPageRoute(builder: (_) => LoginView());
case '/post':
return MaterialPageRoute(builder: (_) => PostView());
default:
return MaterialPageRoute(
builder: (_) {
return Scaffold(
body: Center(
child: Text('No Route for ${settings.name}'),
),
);
},
);
}
}
}

我的 home_view.dart 有下面的代码

class HomeView extends StatelessWidget {
@override
Widget build(BuildContext context) {
print('homeview');
return Scaffold();
}

我在 router.dart 中打印 settings.name 的值。当我启动应用程序时,我在调试控制台中得到以下输出:

Launching lib\main.dart on Android SDK built for x86 in debug mode...
√ Built build\app\outputs\apk\debug\app-debug.apk.
Connecting to VM Service at ws://127.0.0.1:56463/QrArHr5Zg54=/ws
D/EGL_emulation(13000): eglMakeCurrent: 0xd5f1a540: ver 3 1 (tinfo 0xd5f0f880)
I/flutter (13000): setting.name: /
I/flutter (13000): setting.name: /login
I/flutter (13000): homeview

由于 initialRoute 设置为 '/login',我不确定为什么会这样

I/flutter (13000): setting.name: / and 
I/flutter (13000): homeview

我希望它直接转到“/login”案例并呈现 LoginView。有人可以解释这里发生了什么吗?

最佳答案

发生这种情况是因为您在 initialRoute 中使用了斜杠。例如,如果路线 /stocks/HOOLI 被用作 [initialRoute],那么 [Navigator] 将在启动时推送以下路线: /, /stocks, /stocks/HOOLI.这样做是为了深层链接。 https://api.flutter.dev/flutter/widgets/WidgetsApp/initialRoute.html .只需从初始路由中删除斜杠,它将直接推送该路由。

关于flutter - 路由在 flutter 中没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63060349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com