Flutter , 路由跳转(携参和不携参)

一、基本路由
1. 不携带参数

//跳转到EditLogPage页面
Navigator.of(context).push(
             MaterialPageRoute(builder: (contex){
               return EditLogPage();
             })
           );

2. 携带参数
(1)不传参

Navigator.of(context).push(
               MaterialPageRoute(builder: (contex){
                 return EditLogPage();//跳转到编辑日志页面
               })
           );
//编辑日志页面
class EditLogPage extends StatelessWidget{
  String title;
  EditLogPage({this.title="编辑"});//  {}表示默认的值,可以传入参数,也可以不传参
  
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(this.title),
      ),
    );
  }
}

在这里插入图片描述

(2)携带参数

 Navigator.of(context).push(
               MaterialPageRoute(builder: (contex){
                 return EditLogPage(title:"编辑日志");//携带参数跳转到编辑日志页面
               })
           );
class EditLogPage extends StatelessWidget{
  String title;
  EditLogPage({this.title="编辑"});//这里的默认值被覆盖了

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(this.title),
      ),
    );
  }
}

在这里插入图片描述
3.路由跳转–浮动按钮返回

class EditLogPage extends StatelessWidget{
  String title;
  EditLogPage({this.title="编辑"});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(this.title),
      ),
      floatingActionButton: FloatingActionButton(//右下角浮动按钮
        child: Text("返回"),
        onPressed: (){
          Navigator.pop(context);//返回上一级路由
        },
      ),
    );
  }
}

在这里插入图片描述
二、命名路由
(1)新建routs.dart

//配置路由
final routes ={
  "/LoadingPage":(context) =>LoadingPage(),
  '/SearchPage': (context) =>SearchPage(),
  '/MenuPage': (context,arguments) =>MenuPage({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;
    }
  }
};

(2)main.dart

class MyApp extends StatelessWidget {
  
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      initialRoute: "/LoadingPage",   //初始化时候加载的路由
      onGenerateRoute: onGenerateRoute,
     
    );
  }

(3)命名路由跳转

//不携带参数
 Navigator.pushNamed(context, '/SearchPage');//跳转到搜索页面
//携带参数
Navigator.pushNamed(context, '/MenuPage',arguments: title);//带参跳转
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值