路由文件的固定写法

255 阅读1分钟
import 'package:flutter/material.dart';
import '../pages/Tabs.dart';
import '../pages/Swiper.dart';
import '../pages/Dialog.dart';

//配置路由
final routes={
      '/':(context)=>Tabs(),
      '/swiper':(context)=>SwiperPage(),
      '/dialog':(context)=>DialogPage(),
};

//固定写法
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 主入口引入

import 'package:flutter/material.dart';
import 'routes/Routes.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {  
  
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
    
      debugShowCheckedModeBanner:false ,  //去掉debug图标
      // home:Tabs(),   
      initialRoute: '/',     //初始化的时候加载的路由
      onGenerateRoute: onGenerateRoute,
    );
  }
}

使用方法

onTap: (){
  // Navigator.of(context).pop();  //隐藏侧边栏
  Navigator.pushNamed(context, '/user'); //路由跳转
},