移动应用 活跃维护

fluro

lukepighetti/fluro

Fluro 是一个 Flutter 路由库,它增加了灵活的路由选项,如通配符、命名参数和清晰的路由定义。

3710
Stars 标星
410
Forks 分支
46
Watchers 关注
43
Open Issues
Dart
主要语言
MIT
开源协议
1.1 MB
仓库大小
3 年前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:lukepighetti/fluro
git clone https://github.com/lukepighetti/fluro.git
git clone git@github.com:lukepighetti/fluro.git
README.md main

英文原文正文为项目原始 README(英文),本站后续会翻译为中文,当前仅剔除图片与无关章节并统一排版。

英语 | 葡萄牙语



针对 Flutter 的最明亮、最时尚、最酷的路由器。

功能

  • 简单的路由导航
  • 功能处理器(映射到函数而不是路由)
  • 通配符参数匹配
  • 查询字符串参数解析
  • 内置常用过渡效果
  • 简单的自定义过渡创建
  • 遵循 stable Flutter 频道
  • 空安全

示例项目

example 文件夹里有一个非常不错的示例项目。去看看吧。否则,请继续阅读以快速上手。

入门指南

首先,你应该通过如下方式初始化来定义一个新的 FluroRouter 对象:

final router = FluroRouter();

将路由器全局/静态存储可能会很方便,这样您就可以在应用程序的其他区域访问路由器。

实例化路由器后,您需要定义路由和路由处理程序:

var usersHandler = Handler(handlerFunc: (BuildContext context, Map<String, dynamic> params) {
  return UsersScreen(params["id"][0]);
});

void defineRoutes(FluroRouter router) {
  router.define("/users/:id", handler: usersHandler);

  // it is also possible to define the route transition to use
  // router.define("users/:id", handler: usersHandler, transitionType: TransitionType.inFromLeft);
}

在上面的例子中,路由器将拦截像 /users/1234 这样的路由,并将应用程序路由到 UsersScreen,将值 1234 作为参数传递给该屏幕。

导航

你可以通过 FluroRouter.generator 使用 FluroRouter 配合 MaterialApp.onGenerateRoute 参数。为此,将函数引用传递给 onGenerate 参数,如:onGenerateRoute: router.generator。

然后你可以使用 Navigator.push,Flutter 的路由机制会为你匹配路由。

你也可以手动推送到某个路由。为此:

router.navigateTo(context, "/users/1234", transition: TransitionType.fadeIn);

类参数

不想为参数使用字符串?别担心。

在使用自定义 RouteSettings 推送路由后,你可以使用 BuildContext.settings 扩展来提取设置。通常,这会在 Handler.handlerFunc 中完成,这样你就可以将 RouteSettings.arguments 传递给你的屏幕组件。

/// Push a route with custom RouteSettings if you don't want to use path params
FluroRouter.appRouter.navigateTo(
  context,
  'home',
  routeSettings: RouteSettings(
    arguments: MyArgumentsDataClass('foo!'),
  ),
);

/// Extract the arguments using [BuildContext.settings.arguments] or [BuildContext.arguments] for short
var homeHandler = Handler(
  handlerFunc: (context, params) {
    final args = context.settings.arguments as MyArgumentsDataClass;

    return HomeComponent(args);
  },
);
本站来源与版权声明
  • 本文标题:fluro - Fluro 是一个 Flutter 路由库
  • 本文链接:https://cn121.com/mobile/lukepighetti-fluro.html
  • 原项目:lukepighetti/fluro 版权归原作者 lukepighetti 及贡献者所有
  • 收录信息:本站于 2026-10-07 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
  • 开源协议:收录时本项目采用 MIT(查看 LICENSE 原文),本站转载其原始文档(未改动文字,仅剔除图片与无关章节);使用、修改、分发请以该仓库 LICENSE 原文为准。
  • 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 lukepighetti/fluro。
  • 内容说明:本页正文为原项目 README 原文(英文),本站后续会翻译为中文(当前尚未译出,仅将二级标题译为中文,便于按栏目定位;标题原文可在下方原仓库中查看),仅剔除了图片与赞助等无关章节、并把相对链接改为绝对地址;页首简介为机器翻译自仓库描述。
  • 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息。
  • 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。