flutter 路由插件fluro配置及其使用

flutter 路由插件fluro配置及其使用

pubspec.yaml:引入插件

dependencies:
  flutter:
    sdk: flutter
  fluro: "^1.6.3"

1. 首先创建一个router_handler.dart文件,定义路由去到哪个部件,以及传递给该部件的参数:

router_handler.dart文件如下:

import 'pagckage:flutter/material.dart';
//引入路由插件fluro 需要在pubspec.yaml文件中配置插件并下载才能引入
import 'pagckage:fluro/fluro.dart';
//引入路由跳转去到的部件
import '../pages/user.dart';

Handler userHandler = Handler(handlerFunc: (BuildContext context, Map<String, dynamic> params) {
  //params是跳转路由url?后面传递的参数,我们需要参数里面的id值并传递给跳转到的部件内
  return User(params["id"][0]);
});
//下面还可以继续添加如上的路由跳转Handler
...

2. 下面就是给路由命名的 routes.dart 文件
routes.dart文件如下:

import 'pagckage:flutter/material.dart';
//引入路由插件fluro 需要在yml文件中配置插件并下载才能引入
import 'pagckage:fluro/fluro.dart';
//引入决定路由跳转去到而的部件router_handler
import './router_handler.dart';
//没有对应匹配路由时去的部件
import './page_404.dart';

class Routes {
  static String root = '/';
  static String user = '/user';
  ...
  static void configureRoutes(Router router) {
    //notFoundHandler是匹配不到路由时执行出发的
    router.notFoundHandler = new Handler(handlerFunc: (BuildContext context, Map<String, dynamic> params)) {
       //这是可以定义一个404页面部件
       return Page404();
    };
    //根路由时去homeHandler部件 当然router_handler.dart里我没定义homeHandler,可自行配置
    router.define(root, handler: homeHandler);
    //user路由时去userHandler部件
    router.define(user, handler: userHandler);
    //也可以直接写路由路径
    router.define('/user/:id', handler: userHandler);
  }
}

3. 静态化路由: 目的:使路由静态化
application.dart 文件如下:

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

4. 在main.dart 内注入路由,相当于给全局注入路由

...
import './routers/application.dart';
import './routers/routes.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  //注入路由
  final router = Router();
  Router.congigureRoutes(router);
  Application.router = router;
  
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      onGenerataRoute: Application.router.generator, //全局注入路由
	  ...	
    );
  }
}

5. 使用路由:

InkWell(
  onTap: (){
     //通过Application的路由就可以跳转页面啦
     Application.router.navigateTo(context, "/user?id=${userId}")
  },
  child: ...
)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flutter中,使用Fluro库实现带参数的路由非常简单。首先,你需要在route_handlers.dart文件中定义一个处理函数,该函数接收参数并返回相应的界面。在这个函数中,你可以使用路由参数来获取传递的参数值。例如,在你的代码中,settingHandler是一个处理函数,它接收一个BuildContext对象和一个Map<String, List<String>>类型的参数params,并从params中获取'id'参数的值args。然后,你可以使用该参数值来创建一个Setting界面的实例,并返回该实例。这样,当Fluro路由系统匹配到"/setting"路由时,它会调用settingHandler处理函数并传递参数。 接着,在route.dart文件中,你需要配置路由并将路由与对应的处理函数关联起来。你可以使用FluroRouter的define方法来注册路由,并使用handler参数指定对应的处理函数。在你的代码中,Routes类的configureRoutes方法中使用了router.define方法注册了"/setting"路由,并将settingHandler作为其处理函数。这样,当导航器导航到"/setting"路由时,Fluro路由系统会调用settingHandler处理函数来处理该路由。 总结起来,要实现Flutter Fluro带参数的路由,你需要在route_handlers.dart中定义处理函数,接收参数并返回相应的界面实例。然后,在route.dart中配置路由并将路由与对应的处理函数关联起来。这样,当导航器匹配到相应的路由时,Fluro路由系统会调用处理函数并传递参数,从而实现带参数的路由导航。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值