Flutter 3.3 普通路由 ,普通路由传值 命名路由 命名
2020-03-10 本文已影响0人
贝灬小晖
//普通路由
import 'package:flutter/material.dart';
import 'detail.dart';
class HomeController extends StatefulWidget {
@override
_HomeControllerState createState() => _HomeControllerState();
}
class _HomeControllerState extends State<HomeController> {
@override
Widget build(BuildContext context) {
return ListView(
children: <Widget>[
RaisedButton(
child: Text("我的跳转"),
onPressed: (){
Navigator.of(context).push(
MaterialPageRoute(
builder: (context){
//传值
return Detail("1234");
}
)
);
},
)
],
);
}
}
RaisedButton(
child: Text("返回"),
onPressed: (){
Navigator.of(context).pop();
},
)
//命名路由 统一管理路由
return MaterialApp(
// home: HTopMain(),
theme: ThemeData(primarySwatch: Colors.red),
initialRoute:"/", //跳转的首页路由
routes: {
'/':(context){
return HTopMain();
},
'detail':(context){
return Detail("str");
},
'login':(context){
return Login();
},
"tip2": (context){
return Detail(ModalRoute.of(context).settings.arguments);
},
},
Widget build(BuildContext context) {
//获取路由参数
var args=ModalRoute.of(context).settings.arguments;
//...省略无关代码
////
//路由生成钩子
假设我们要开发一个电商APP,当用户没有登录时可以看店铺、商品等信息,但交易记录、购物车、用户个人信息等页面需要登录后才能看。为了实现上述功能,我们需要在打开每一个路由页前判断用户登录状态!如果每次打开路由前我们都需要去判断一下将会非常麻烦,那有什么更好的办法吗?答案是有!
Pasted Graphic 1.png