项目作者: lukepighetti

项目描述 :
Fluro is a Flutter routing library that adds flexible routing options like wildcards, named parameters and clear route definitions.
高级语言: Dart
项目地址: git://github.com/lukepighetti/fluro.git
创建时间: 2017-04-25T07:23:44Z
项目社区:https://github.com/lukepighetti/fluro

开源协议:MIT License

下载


English | Português




The brightest, hippest, coolest router for Flutter.

Version
Build Status

Features

  • Simple route navigation
  • Function handlers (map to a function instead of a route)
  • Wildcard parameter matching
  • Querystring parameter parsing
  • Common transitions built-in
  • Simple custom transition creation
  • Follows stable Flutter channel
  • Null-safety

Example Project

There is a pretty sweet example project in the example folder. Check it out. Otherwise, keep reading to get up and running.

Getting started

First, you should define a new FluroRouter object by initializing it as such:

  1. final router = FluroRouter();

It may be convenient for you to store the router globally/statically so that
you can access the router in other areas in your application.

After instantiating the router, you will need to define your routes and your route handlers:

  1. var usersHandler = Handler(handlerFunc: (BuildContext context, Map<String, dynamic> params) {
  2. return UsersScreen(params["id"][0]);
  3. });
  4. void defineRoutes(FluroRouter router) {
  5. router.define("/users/:id", handler: usersHandler);
  6. // it is also possible to define the route transition to use
  7. // router.define("users/:id", handler: usersHandler, transitionType: TransitionType.inFromLeft);
  8. }

In the above example, the router will intercept a route such as
/users/1234 and route the application to the UsersScreen passing
the value 1234 as a parameter to that screen.

Navigating

You can use FluroRouter with the MaterialApp.onGenerateRoute parameter
via FluroRouter.generator. To do so, pass the function reference to
the onGenerate parameter like: onGenerateRoute: router.generator.

You can then use Navigator.push and the flutter routing mechanism will match the routes
for you.

You can also manually push to a route yourself. To do so:

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

Class arguments

Don’t want to use strings for params? No worries.

After pushing a route with a custom RouteSettings you can use the BuildContext.settings extension to extract the settings. Typically this would be done in Handler.handlerFunc so you can pass RouteSettings.arguments to your screen widgets.

  1. /// Push a route with custom RouteSettings if you don't want to use path params
  2. FluroRouter.appRouter.navigateTo(
  3. context,
  4. 'home',
  5. routeSettings: RouteSettings(
  6. arguments: MyArgumentsDataClass('foo!'),
  7. ),
  8. );
  9. /// Extract the arguments using [BuildContext.settings.arguments] or [BuildContext.arguments] for short
  10. var homeHandler = Handler(
  11. handlerFunc: (context, params) {
  12. final args = context.settings.arguments as MyArgumentsDataClass;
  13. return HomeComponent(args);
  14. },
  15. );