flutterintent helps you to make your navigation easier and readable. It implements the intent pattern of the Android Framework.

Getting Started with the plugin

1. Add to your pubspec.yaml

		sdk: flutter

2. Import it

import  'package:flutterintent/flutterintent.dart';

3. Use it

Send an intent:

FlutterIntent(context:context,name: "/page2")

Send an intent and attach data:

FlutterIntent(context:context,name: "/page2")
..putExtra("myString","Hello World")
..putObjectExtra("myObject",Car(color: "red")

Get an intent and the attached data:

This plugin required the usage of the onGenerateRoute attribute of the MaterialApp or CupertinoApp Widget. For getting the intent we send we have to setup the following:

  Widget build(BuildContext context) {
    return MaterialApp(
      onGenerateRoute: (settings)  {
        //Convert settings to flutter intent type
        return FlutterIntentService.fromRouteSettings(settings, (intent) {
            //Do always a null check, because on start the intent is always null
            if(intent == null || intent.name == "/")
              return HomePage();
            if(intent.name == "/page2") {
              //fetch the string which is send with the key "myString"
              var text = intent.getStringExtra("myString"); //Hello World
              return PageTwo(text: text)

Start a widget for getting a result If you want to get a result back from a widget when it's closed you can use startForResult():

//Page 1
FlutterIntent(context: context,name: "/page2")
..startForResult((result,intent,requestCode) {
    if(result == Result.ok && requestCode == 200) {

Set Result and send data back to previous widget:

//Page 2
FlutterIntent.setResult(context: context,result: Result.ok)
..putExtra("hello_world","Hello World")

Profit! :)