flutter实战项目08 fluro路由

1,在ymal文件中引入 fluro: “^1.6.3”; 2,在pages文件夹下创建跳转页面 例:商品详情页detail_page.dart

import package:flutter/material.dart;
class DetailPage extends StatelessWidget {
  final String goodsId;//接收商品id
  DetailPage(this.goodsId);
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Center(child: Text("${goodsId}")),
    );
  }
}

3,在routers文件夹下创建handler页面 例:商品详情页 router_handler.dart

import package:flutter/material.dart;
import package:fluro/fluro.dart;
import ../pages/detail_page.dart;

Handler detailHandler = Handler(
   handlerFunc:(BuildContext context,Map<String,List<String>> params){
     String goodsId = params[id].first;//传入商品id
     return DetailPage(goodsId);//返回DetailPage页面
   }
);

4,在routers文件夹下创建routers.dart页面

import package:flutter/material.dart;
import package:fluro/fluro.dart;
import ./router_handler.dart;

class Routes {
  static String root = /;//根目录
  static String detailsPage = /detail;//详情页路由
  static void configureRoutes(Router router){
    //如果找不到页面
    router.notFoundHandler = new Handler(
      handlerFunc: (BuildContext context,Map<String,List<String>> params){
        print("router not found");
      }
    );
    router.define(detailsPage, handler: detailHandler);//配置页面路由
  }
}

4,路由静态化 在routers文件夹下创建application.dart

import package:fluro/fluro.dart;
class Application{
  static Router router;
}

5,在main.dart中引入路由

import ./routers/routers.dart;
import ./routers/application.dart

class MyApp extends StatelessWidget{
  @override
  Widget build(BuildContext context){
    //路由配置
    final router =  Router();
    Routes.configureRoutes(router);
    Application.router = router;

    return Container(
      child: MaterialApp(
        title: KeyString.mainTitle,//flutter商城
        onGenerateRoute: Application.router.generator,//配置路由
        debugShowCheckedModeBanner: false,//隐藏右上角debugger
        theme: ThemeData(
          primaryColor: KeyColor.primayColor,//主题颜色
        ),
        home: IndexPage()
      )
    );
  }
}

6,在相应地方做路由跳转

import ../routers/application.dart;
onTap: (){
     Application.router.navigateTo(context, "detail?id=${el[goodsId]}");
},
经验分享 程序员 微信小程序 职场和发展