fluro/README.md

95 lines
3.0 KiB
Markdown
Raw Permalink Normal View History

2018-07-21 13:46:52 -04:00
<img src="https://storage.googleapis.com/product-logos/logo_fluro.png" width="220">
2017-05-14 00:28:28 -04:00
<br/><br/>
The brightest, hippest, coolest router for Flutter.
2017-05-04 15:49:13 -04:00
[![Version](https://img.shields.io/badge/version-1.6.3-blue.svg)](https://pub.dartlang.org/packages/fluro)
2018-07-21 13:46:52 -04:00
[![Build Status](https://travis-ci.org/theyakka/fluro.svg?branch=master)](https://travis-ci.org/theyakka/fluro)
[![Coverage](https://codecov.io/gh/theyakka/fluro/branch/master/graph/badge.svg)](https://codecov.io/gh/theyakka/fluro)
2017-05-14 00:28:28 -04:00
2020-03-28 17:37:43 -04:00
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`.
2020-03-08 22:39:52 -04:00
2017-05-14 00:28:28 -04:00
## Features
- Simple route navigation
- Function handlers (map to a function instead of a route)
2017-05-14 00:28:28 -04:00
- Wildcard parameter matching
- Querystring parameter parsing
- Common transitions built-in
- Simple custom transition creation
2017-05-06 02:22:53 -04:00
## Version compatability
2018-03-12 22:42:04 -04:00
See CHANGELOG for all breaking (and non-breaking) changes.
2017-05-04 15:49:13 -04:00
## Getting started
2017-05-14 00:28:28 -04:00
You should ensure that you add the router as a dependency in your flutter project.
2017-05-14 01:11:48 -04:00
```yaml
dependencies:
fluro: "^1.6.3"
2017-05-14 01:11:48 -04:00
```
2017-05-14 00:28:28 -04:00
2017-05-14 01:11:48 -04:00
You can also reference the git repo directly if you want:
```yaml
2017-05-04 15:49:13 -04:00
dependencies:
2017-05-14 01:11:48 -04:00
fluro:
2018-07-21 13:46:52 -04:00
git: git://github.com/theyakka/fluro.git
2017-05-04 15:49:13 -04:00
```
2017-05-14 01:11:48 -04:00
2017-05-14 00:28:28 -04:00
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.
2017-05-04 15:49:13 -04:00
## Setting up
2017-05-14 00:28:28 -04:00
First, you should define a new `Router` object by initializing it as such:
2017-05-04 15:49:13 -04:00
```dart
2018-07-27 18:45:30 -04:00
final router = Router();
2017-05-04 15:49:13 -04:00
```
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
2018-07-27 18:45:30 -04:00
var usersHandler = Handler(handlerFunc: (BuildContext context, Map<String, dynamic> params) {
return UsersScreen(params["id"][0]);
});
2017-05-04 15:49:13 -04:00
void defineRoutes(Router 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);
2017-05-04 15:49:13 -04:00
}
```
2017-05-14 00:28:28 -04:00
In the above example, the router will intercept a route such as
2017-05-04 15:49:13 -04:00
`/users/1234` and route the application to the `UsersScreen` passing
the value `1234` as a parameter to that screen.
## Navigating
You can use the `Router` with the `MaterialApp.onGenerateRoute` parameter
2017-05-14 00:28:28 -04:00
via the `Router.generator` function. To do so, pass the function reference to
the `onGenerate` parameter like: `onGenerateRoute: router.generator`.
2017-05-04 15:49:13 -04:00
You can then use `Navigator.push` and the flutter routing mechanism will match the routes
2017-05-14 00:28:28 -04:00
for you.
2017-05-04 15:50:29 -04:00
You can also manually push to a route yourself. To do so:
2017-05-04 15:49:13 -04:00
```dart
2018-07-27 18:46:26 -04:00
router.navigateTo(context, "/users/1234", transition: TransitionType.fadeIn);
2017-05-14 00:28:28 -04:00
```
2018-07-27 21:15:51 -04:00
2017-05-14 01:28:34 -04:00
<hr/>
2018-07-21 13:46:52 -04:00
Fluro is a Yakka original.
2017-05-14 01:28:34 -04:00
<br/>
2018-07-21 13:46:52 -04:00
<a href="https://theyakka.com" target="_yakka">
<img src="https://storage.googleapis.com/yakka-logos/logo_wordmark.png"
2017-05-14 01:28:34 -04:00
width="60"></a>