Compass

WARNING: ONLY ON FLUTTER'S MASTER BRANCH (for now)

A simple shim to make named routes with arguments easier.

How to use

If you don't want to access the routes at runtime

  • You only need to add Compass as the onGenerateRoute argument
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      onGenerateRoute: Compass({
        "/": (c, a) => MyHomePage(title: a),
      }),
    );
  }
}

If you want to access the routes at runtime

  • If you only use named routes, use Compass.of(context).routes
  • If you use a mix of named and anonymous routes
    • Create your Compass in an accessible scope, for example, as a member of your master widget
    • Add a CompassProvider as a parent of your MaterialApp
    • Provide your Compass to the CompassProvider
    • Put your MaterialApp inside of the CompassProvider
    • Set the onGenerateRoute parameter to your Compass
      class MyApp extends StatelessWidget {
          final compass = Compass({
              "/": (c, a) => MyHomePage(title: a),
          });
    
          @override
          Widget build(BuildContext context) {
              return CompassProvider(
                  compass: compass,
                  child: MaterialApp(
                      onGenerateRoute: compass,
                      home: MyHomePage(),
                  ),
              );
          }
      }
    

Features

  • Accessible anywhere for modification
  • Simple interface

Libraries

compassion

Dart

dart:ui
Built-in types and core primitives for a Flutter application. [...]

Core

dart:async
Support for asynchronous programming, with classes such as Future and Stream. [...]
dart:collection
Classes and utilities that supplement the collection support in dart:core. [...]
dart:convert
Encoders and decoders for converting between different data representations, including JSON and UTF-8. [...]
dart:core
Built-in types, collections, and other core functionality for every Dart program. [...]
dart:developer
Interact with developer tools such as the debugger and inspector. [...]
dart:math
Mathematical constants and functions, plus a random number generator. [...]
dart:typed_data
Lists that efficiently handle fixed sized data (for example, unsigned 8 byte integers) and SIMD numeric types. [...]

VM

dart:io
File, socket, HTTP, and other I/O support for non-web applications. [...]
dart:isolate
Concurrent programming using isolates: independent workers that are similar to threads but don't share memory, communicating only via messages. [...]