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]}");
},
