Flutter 3.3 普通路由 ,普通路由传值 命名路由 命名路由传值

//普通路由

import 'package:flutter/material.dart';
import 'detail.dart';
class HomeController extends StatefulWidget {
  @override
  _HomeControllerState createState() => _HomeControllerState();
}

class _HomeControllerState extends State {
  @override
  Widget build(BuildContext context) {
    return ListView(
      children: [
        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
判断 router 可以使用普通路由进行跳转.
不好用 暂时不用了

你可能感兴趣的:(Flutter 3.3 普通路由 ,普通路由传值 命名路由 命名路由传值)