lukepighetti/fluro
Fork: 415 Star: 3684 (更新于 2024-11-15 18:00:32)
license: MIT
Language: Dart .
Fluro is a Flutter routing library that adds flexible routing options like wildcards, named parameters and clear route definitions.
最后发布版本: 2.0.3 ( 2021-03-02 03:17:43)
The brightest, hippest, coolest router for Flutter.
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);
},
);
最近版本更新:(数据更新于 2024-08-23 12:15:02)
2021-03-02 03:17:43 2.0.3
2021-03-02 01:13:07 2.0.2
2020-11-24 21:58:55 1.7.8
2020-10-27 08:07:51 1.7.7
2020-10-22 19:15:00 1.7.6
2020-10-22 19:06:21 1.7.5
2020-10-20 21:21:13 1.7.4
2020-10-17 12:47:43 1.7.3
2020-10-16 22:11:25 1.7.2
2020-10-16 11:13:54 1.7.0
主题(topics):
flutter, flutter-routing, parameters, router, routing
lukepighetti/fluro同语言 Dart最近更新仓库
2024-11-20 16:26:27 KaringX/karing
2024-11-19 17:11:22 3003h/Eros-FE
2024-11-17 21:28:59 chen08209/FlClash
2024-11-05 08:14:52 localsend/localsend
2024-10-22 11:36:07 AppFlowy-IO/AppFlowy
2024-10-10 23:24:57 guozhigq/pilipala