Search packages, repositories and app categories

Package detailsv2.0.5

fluro

Fluro is a null-safe Flutter routing library that adds flexible routing options like wildcards, named parameters and clear route definitions.

AndroidiOSWebmacOSWindowsLinux
30-day downloads
23.2K
Likes
891
Pub points
150

Install package

flutter pub add fluro

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

Fluro is a null-safe Flutter routing library designed to simplify navigation with flexible route configurations. It supports wildcards, named parameters, and clean, declarative route definitions, making it easy to manage complex navigation flows across multiple platforms. Ideal for apps requiring dynamic routing patterns, Fluro enhances code readability and maintainability. Its lightweight nature and compatibility with Android, iOS, Web, macOS, Windows, and Linux make it a versatile choice for modern Flutter applications.

Use cases

  • Complex navigation with dynamic routes
  • Parameterized URL routing
  • Cross-platform app navigation
  • Modular app architecture
  • Deep linking support
  • Clean separation of route logic

Key features

  • Wildcard route matching
  • Named parameter support
  • Declarative route definitions
  • Null-safe API
  • Lightweight and performant
  • Platform-agnostic

Suitable for

  • Developers needing advanced routing
  • Apps with deep linking requirements
  • Large-scale Flutter projects
  • Teams prioritizing clean code structure
  • Projects targeting multiple platforms

Considerations

  • Requires manual route registration
  • Limited built-in navigation state management
  • Steeper learning curve than basic Navigator
  • Not actively maintained (last update 2021)
  • Community support primarily through GitHub issues

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

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:

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:

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);
}

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:

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.

/// 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);
  },
);

Categories

Source repository

Projects using this package