Fluro는 유연한 라우트 구성으로 네비게이션을 단순화하기 위해 설계된 null 안전한 Flutter 라우팅 라이브러리입니다. 와일드카드, 이름 붙은 매개변수 및 깔끔한 선언적 라우트 정의를 지원하여 여러 플랫폼에서 복잡한 네비게이션 흐름을 쉽게 관리할 수 있습니다. 동적 라우팅 패턴이 필요한 앱에 적합하며 코드의 가독성과 유지보수성을 향상시킵니다. 경량 구조와 Android, iOS, Web, macOS, Windows, Linux와의 호환성 덕분에 현대적인 Flutter 애플리케이션에 매우 유용한 선택입니다.
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) {
returnUsersScreen(params["id"][0]);
});
voiddefineRoutes(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:
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 paramsFluroRouter.appRouter.navigateTo(
context,
'home',
routeSettings: RouteSettings(
arguments: MyArgumentsDataClass('foo!'),
),
);
/// Extract the arguments using [BuildContext.settings.arguments] or [BuildContext.arguments] for shortvar homeHandler = Handler(
handlerFunc: (context, params) {
final args = context.settings.arguments asMyArgumentsDataClass;
returnHomeComponent(args);
},
);