Flutter 路由跳转 fluro

地址:https://pub.flutter-io.cn/packages/fluro

 

dependencies:
  fluro: ^2.0.4
Routes管理类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import 'package:common_lib/fluro/router_handler.dart';
import 'package:fluro/fluro.dart';
 
 
/**
 * 路由管理
 */
class Routes {
  // static Router router;
   
  // 根路径
  static String root = "/";
  // 设置页面
  static String settings = "/setting";
  // 网页加载
  static String webView = "/webView";
 
  // 配置route
  static void configureRoutes(FluroRouter router) {
    // 未发现对应route 处理
    router.notFoundHandler = RouterHandler.notFoundHandler;
    // router.define(root, handler: handler)
    router.define(settings, handler: RouterHandler.settingHandler);
    router.define(webView, handler: RouterHandler.webViewHandler);
  }
 
}

 handler管理类 router_handler

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import 'package:common_lib/pages/NotFoundPage.dart';
import 'package:common_lib/pages/home_page.dart';
import 'package:common_lib/pages/setting_page.dart';
import 'package:common_lib/pages/webview_page.dart';
import 'package:fluro/fluro.dart';
 
class RouterHandler {
  // 根路径
 static var rootHandler = Handler(handlerFunc: (context,params) {
    return HomePage();
  });
 
// 页面不存在
  static var notFoundHandler = Handler(handlerFunc: (context,params) {
    return NotFoundPage();
  });
 
// 设置页面  不带参数
  static var settingHandler = Handler(handlerFunc: (context,params) {
    return SettingPage();
  });
 
  // 网页加载带参数 -示例:传多个字符串参数
  static var webViewHandler = Handler(handlerFunc: (context,params) {
    // params 内容为 {title: [我是标题哈哈哈],url: [https://www.baidu.com]}
    String? titleStr = params['title']?.first;
    String? urlStr = params['url']?.first;
    return WebViewPage(title: "$titleStr", url: "$urlStr");
  });
}

 配置router

1
2
3
4
5
6
MyApp() {
   // 注册初始化fluro
   final router = Router();
   Routers.configureRoutes(router);
   Routers.router = router;
 }

 跳转

1
2
3
4
5
6
7
8
//对象需要转String
                     String itemDataJson = FluroConvertUtils.object2string(
                         _bulletinsList[index]);
                     Routers.navigateTo(context, Routers.messageDetailPage,
                         params: {
                           'bar_title': "Detail",
                           'item_data': itemDataJson,
                         });

 

 



 

posted @   疯子FK  阅读(148)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示