当前位置: 首页 > backend >正文

Flutter路由模块化管理方案

总结记录一下Flutter路由模块管理:

1、创建路由基类

abstract class BaseRouteConfig {Map<String, WidgetBuilder> get routes;
}

2、创建不同模块的路由配置类

// 认证模块路由
class AuthRoutes extends BaseRouteConfig {@overrideMap<String, WidgetBuilder> get routes => {'login': (context) {final int viType = ModalRoute.of(context)?.settings.arguments as int;return PassLoginPage(viType: viType);},'/login': (context) => const LoginPage(),'phoneVerifyCode': (context) {final phone = ModalRoute.of(context)?.settings.arguments as String?;return PhoneVerifyCodePage(phone: phone);},'/phoneVerifyCode': (context) => const PhoneVerifyCodePage(),// 其他认证相关路由...};
}// 用户中心模块路由
class UserCenterRoutes extends BaseRouteConfig {@overrideMap<String, WidgetBuilder> get routes => {'editPersonal': (context) => const EditPersonalPage(),'userCenter': (context) => const IndividualCenter(),'accountSecurity': (context) => const AccountSecurity(),// 其他用户中心路由...};
}// 商家模块路由
class MerchantRoutes extends BaseRouteConfig {@overrideMap<String, WidgetBuilder> get routes => {'merchant': (context) => const MerchantWidget(),'merchantBasicInfo': (context) => const MerchantBasicInfo(),'merchantBasicDetail': (context) {final status = ModalRoute.of(context)?.settings.arguments as String?;return MerchantBasicDetail(status: status);},// 其他商家路由...};
}

3、创建聚合路由配置类

class AppRoutes {static final Map<String, WidgetBuilder> _allRoutes = {};static void initialize() {_allRoutes.addAll(AuthRoutes().routes);_allRoutes.addAll(UserCenterRoutes().routes);_allRoutes.addAll(MerchantRoutes().routes);// 添加其他模块路由...}static Map<String, WidgetBuilder> get allRoutes => _allRoutes;
}

4、使用方法,修改 main 方法初始化路由

void main() async {// ...其他初始化代码// 初始化路由配置AppRoutes.initialize();runApp(MaterialApp(// ...routes: AppRoutes.allRoutes,// ...));
}

5、添加新路由模块的示例

// 新增创作中心模块
class CreativeRoutes extends BaseRouteConfig {@overrideMap<String, WidgetBuilder> get routes => {'creativeCenter': (context) => const CreativeCenter(),'workRelease': (context) => const WorkRelease(),'uploadWork': (context) => const UploadWorkPage(),// 其他创作相关路由...};
}// 在 AppRoutes 中添加
class AppRoutes {// ...static void initialize() {// ..._allRoutes.addAll(CreativeRoutes().routes);}
}

优势说明:

  1. 模块化管理:将路由按功能模块划分,便于维护和查找

  2. 扩展性强:新增模块只需创建新的配置类并注册到 AppRoutes

  3. 类型安全:每个路由配置都是强类型校验

  4. 参数处理:保留原有的动态参数处理逻辑

  5. 命名规范

  • 使用命名路由统一以'/'开头
  • 页面路由使用小驼峰命名
  • Dialog 路由添加 Dialog 后缀

  这种架构可以很好地支持大型项目的路由管理需求,同时保持代码的可维护性和扩展性。新的开发人员可以快速定位路由配置位置,模块负责人可以独立维护自己模块的路由配置。

http://www.xdnf.cn/news/957.html

相关文章:

  • 组件是怎样写的(1):虚拟列表-VirtualList
  • 第 6 篇:衡量预测好坏 - 评估指标
  • 实现侧边栏点击标题列表,和中间列表区域联动效果
  • 《P3029 [USACO11NOV] Cow Lineup S》
  • 代码随想录算法训练营day8(栈与队列)
  • 个性化的配置AndroidStudio
  • MySQL-存储过程--游标
  • 腾讯IMA深度使用指南:从下载安装到高效应用
  • 安全协议分析概述
  • 10天学会嵌入式技术之51单片机-day-3
  • CSS文本属性
  • Java 泛型使用教程
  • 力扣第446场周赛
  • 时序逻辑入门指南:LTL、CTL与PTL的概念介绍与应用场景
  • Typescript中的泛型约束extends keyof
  • 速查手册:TA-Lib 超过150种量化技术指标计算全解 - 7. Pattern Recognition(模式识别)
  • ubuntu学习day4
  • SaltStack远程协助工具
  • Oracle for Linux安装和配置(11)——Linux配置
  • Franka机器人ROS 2来袭:解锁机器人多元应用新可能
  • SpringBoot + Vue 实现云端图片上传与回显(基于OSS等云存储)
  • 单片机可以用来做机器人吗?
  • 超详细实现单链表的基础增删改查——基于C语言实现
  • 聚类算法(K-means、DBSCAN)
  • 基于DeepSeek/AI的资产测绘与威胁图谱构建
  • Java高频面试之并发编程-04
  • LangGraph(一)——QuickStart样例中的第一步
  • linux sysfs的使用
  • XAttention
  • 初识Redis · C++客户端list和hash