您能帮我解决我在flutter应用程序中使用go_router包时遇到的问题吗?
示例代码:
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
final _router = GoRouter(
initialLocation: '/',
routes: [
GoRoute(
path: '/',
name: 'homepage',
builder: (context, state) => const MyHomePage(),
routes: [
GoRoute(
path: 'shoppingcart',
name: 'cartpage',
pageBuilder: (context, state) => MaterialPage(
key: state.pageKey,
fullscreenDialog: true,
child: const ShoppingCartScreen(),
),
)
],
),
],
);
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp.router(
debugShowCheckedModeBanner: false,
routerConfig: _router,
);
}
}
class MyHomePage extends StatelessWidget {
const MyHomePage({
super.key,
});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('App Bar'),
actions: [
IconButton(
icon: const Icon(Icons.shopping_cart),
onPressed: () => context.pushNamed('cartpage'),
),
],
),
body: Container(
color: Colors.green[200],
child: const Center(child: Text("Home Page")),
));
}
}
class ShoppingCartScreen extends StatelessWidget {
const ShoppingCartScreen({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('shopping cart page'),
),
body: Container(
color: Colors.purple[200],
child: const Center(child: Text("Shopping Cart Screen")),
),
);
}
}
问题指出步骤:
-步骤1:在chrome浏览器上运行下面的flutter应用程序代码。-第二步:点击购物车图标进入另一个界面。-第三步:点击热加载
通过点击hot reload, go_router不再显示"购物车屏幕",而是显示主屏幕。
如果我想在热重新加载后留在同一个屏幕上,解决方案是什么?
我在我的flutter项目中使用go_router 5.2.0,但它不支持用上面提到的代码热加载。
到目前为止,Flutter还不支持Web的Hot Reload。当你按Ctrl + F,甚至是热重启按钮,它执行热重启代替。