|
@@ -1,14 +1,91 @@
|
|
|
-# fluro
|
|
|
|
|
|
|
+<img src="https://storage.googleapis.com/product-logos/logo_fluro.png" width="220">
|
|
|
|
|
+<br/><br/>
|
|
|
|
|
|
|
|
-A new Flutter package project.
|
|
|
|
|
|
|
+The brightest, hippest, coolest router for Flutter.
|
|
|
|
|
|
|
|
-## Getting Started
|
|
|
|
|
|
|
+[](https://pub.dartlang.org/packages/fluro)
|
|
|
|
|
+[](https://travis-ci.org/theyakka/fluro)
|
|
|
|
|
+[](https://codecov.io/gh/theyakka/fluro)
|
|
|
|
|
|
|
|
-This project is a starting point for a Dart
|
|
|
|
|
-[package](https://flutter.dev/developing-packages/),
|
|
|
|
|
-a library module containing code that can be shared easily across
|
|
|
|
|
-multiple Flutter or Dart projects.
|
|
|
|
|
|
|
+Version `1.6.0` (and higher) requires Flutter `>= 1.12.0` and Dart `>= 2.6.0`. If you're running an older version of Flutter, use a version `< 1.6.0`.
|
|
|
|
|
|
|
|
-For help getting started with Flutter, view our
|
|
|
|
|
-[online documentation](https://flutter.dev/docs), which offers tutorials,
|
|
|
|
|
-samples, guidance on mobile development, and a full API reference.
|
|
|
|
|
|
|
+## 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
|
|
|
|
|
+
|
|
|
|
|
+## Version compatability
|
|
|
|
|
+
|
|
|
|
|
+See CHANGELOG for all breaking (and non-breaking) changes.
|
|
|
|
|
+
|
|
|
|
|
+## Getting started
|
|
|
|
|
+
|
|
|
|
|
+You should ensure that you add the router as a dependency in your flutter project.
|
|
|
|
|
+
|
|
|
|
|
+```yaml
|
|
|
|
|
+dependencies:
|
|
|
|
|
+ fluro: "^1.6.4"
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+You can also reference the git repo directly if you want:
|
|
|
|
|
+
|
|
|
|
|
+```yaml
|
|
|
|
|
+dependencies:
|
|
|
|
|
+ fluro:
|
|
|
|
|
+ git: git://github.com/theyakka/fluro.git
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+You should then run `flutter packages upgrade` or update your packages in IntelliJ.
|
|
|
|
|
+
|
|
|
|
|
+## Example Project
|
|
|
|
|
+
|
|
|
|
|
+There is a pretty sweet example project in the `example` folder. Check it out. Otherwise, keep reading to get up and running.
|
|
|
|
|
+
|
|
|
|
|
+## Setting up
|
|
|
|
|
+
|
|
|
|
|
+First, you should define a new `FluroRouter` object by initializing it as such:
|
|
|
|
|
+
|
|
|
|
|
+```dart
|
|
|
|
|
+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:
|
|
|
|
|
+
|
|
|
|
|
+```dart
|
|
|
|
|
+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:
|
|
|
|
|
+
|
|
|
|
|
+```dart
|
|
|
|
|
+router.navigateTo(context, "/users/1234", transition: TransitionType.fadeIn);
|
|
|
|
|
+```
|