Flutter学习三 命名路由
项目结构
所有的路由统一在Routes.dart中管理
Routes.dart
将所有需要跳转的界面引入进来,onGenerateRoute的写法不变,可以直接复制使用,
意思大概是获取你要跳转的页面名,如果不为空检查有没有参数,如果产生书不为空执行
pageContentBuilder(context, arguments: settings.arguments));,如果参数为空,执行
pageContentBuilder(context));
import ‘package:flutter/material.dart‘; import ‘../pages/Tabs.dart‘; import ‘../pages/Form.dart‘; import ‘../pages/Search.dart‘;//配置路由 final routes={ ‘/‘:(context)=>Tabs(), ‘/form‘:(context)=>FormPage(), ‘/search‘:(context,{arguments})=>SearchPage(arguments:arguments), }; //固定写法 var onGenerateRoute=(RouteSettings settings) { // 统一处理 final String name = settings.name; final Function pageContentBuilder = routes[name]; if (pageContentBuilder != null) { if (settings.arguments != null) { final Route route = MaterialPageRoute( builder: (context) => pageContentBuilder(context, arguments: settings.arguments)); return route; }else{ final Route route = MaterialPageRoute( builder: (context) => pageContentBuilder(context)); return route; } } };
main.dart
在main,这段代码很少,大致意思就是在启动时,默认打开 Tabs.dart
然后绑定 onGenerateRoute
import ‘package:flutter/material.dart‘; import ‘routes/Routes.dart‘; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( // home:Tabs(), initialRoute: ‘/‘, //初始化的时候加载的路由 onGenerateRoute: onGenerateRoute ); } }
使用,当我们不需要传值的时候只需把它删掉就好,需要传值的时候加上就好
,但是在跳转过去的页面需要写一个构造函数来获取
arguments: { "id":123 }
RaisedButton( child: Text("跳转到搜索页面"), onPressed: () { //路由跳转 Navigator.pushNamed(context, ‘/search‘,arguments: { "id":123 }); }, color: Theme.of(context).accentColor, textTheme: ButtonTextTheme.primary ),
这里跳转的是搜索页面,那就来看看搜索页怎么写的吧
import ‘package:flutter/material.dart‘; class SearchPage extends StatelessWidget { final arguments; SearchPage({this.arguments}); @override Widget build(BuildContext context) { return Scaffold( appBar:AppBar( title: Text("搜索页面"), ) , body: Text("搜索页面内容区域${arguments != null ? arguments[‘id‘] : ‘0‘}"), ); } }
可以看到,在上面我们定义了一个 arguments
在获取的时候用 arguments[‘id‘]就可以获取到上一个页面传过来的id值,基本就这样
相关推荐
wangxuekuan 2020-11-24
xuedabao 2020-11-19
hjr 2020-10-21
sjun0 2020-11-12
bestallen 2020-08-17
80143853 2020-08-17
Tplinkly 2020-08-15
dingyahui 2020-08-12
JiangMengYa 2020-07-30
BingGoGo技术 2020-07-25
前端小白 2020-07-19
JudeJoo 2020-07-14
bowean 2020-07-05
82344699 2020-07-05
85423468 2020-06-26
tuxlcsdn 2020-06-21
独行者0 2020-06-20