[ flutter ] flutter使用 首页路由配置, 传参
import "package:flutter/material.dart"; import "./pages/my.dart"; import "./pages/user.dart"; void main() { runApp(MyHomePage()); } class MyHomePage extends StatelessWidget { MyHomePage({super.key}); Map routes = { "/user": (context) => const UserPage(), "/my": (context, {arguments}) => MyPage(arguments: arguments) }; @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( backgroundColor: const Color.fromRGBO(244, 244, 244, 1), appBar: AppBar( backgroundColor: Colors.blue, title: const Text("首页"), ), body: const MyBody(), ), onGenerateRoute: (RouteSettings routerSetting) { print(routerSetting); Function fn = routes[routerSetting.name]; if (fn != null) { if (routerSetting.arguments != null) { Route route = MaterialPageRoute(builder: (context) { return fn(context, arguments: routerSetting.arguments); }); return route; } else { Route route = MaterialPageRoute(builder: (context) { return fn(context); }); return route; } } else { return null; } }, ); } } class MyBody extends StatefulWidget { const MyBody({super.key}); @override State<MyBody> createState() => _MyBodyState(); } class _MyBodyState extends State<MyBody> { @override Widget build(BuildContext context) { return GridView.count( crossAxisCount: 3, mainAxisSpacing: 32, crossAxisSpacing: 32, padding: const EdgeInsets.all(16), children: const [ GridTag( Icons.access_alarm_rounded, {"title": "我是标题"}, path: "/my", ), GridTag( Icons.abc, {}, path: "/user", ), GridTag( Icons.ac_unit, {}, ), ]); } } class GridTag extends StatelessWidget { const GridTag(this.icon, this.arguments, {super.key, this.path = ""}); final String path; final IconData icon; final Map arguments; @override Widget build(BuildContext context) { return AspectRatio( aspectRatio: 1, child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(100), color: Colors.white), child: IconButton( onPressed: () { if (path?.isNotEmpty == true) { if (arguments?.isNotEmpty == true) { Navigator.pushNamed(context, path, arguments: arguments); } else { Navigator.pushNamed(context, path); } } }, icon: Icon(icon, size: 80), ), )); } }
本想把生活活成一首诗, 时而优雅 , 时而豪放 , 结果活成了一首歌 , 时而不靠谱 , 时而不着调

浙公网安备 33010602011771号