flutter_mobx 0.3.3+1

flutter_mobx #

pub package CircleCI

Flutter integration with MobX.dart.

Provides the Observer widget that listens to observables and automatically rebuilds on changes.

Example #

class CounterExample extends StatefulWidget {
  const CounterExample({Key key}) : super(key: key);

  @override
  _CounterExampleState createState() => _CounterExampleState();
}

class _CounterExampleState extends State<CounterExample> {
  final _counter = Counter();

  @override
  Widget build(BuildContext context) => Scaffold(
        appBar: AppBar(
          title: const Text('Counter'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              const Text(
                'You have pushed the button this many times:',
              ),
              Observer(
                  builder: (_) => Text(
                        '${_counter.value}',
                        style: const TextStyle(fontSize: 20),
                      )),
            ],
          ),
        ),
        floatingActionButton: FloatingActionButton(
          onPressed: _counter.increment,
          tooltip: 'Increment',
          child: const Icon(Icons.add),
        ),
      );
}

Notice the use of the Observer widget that listens to _counter.value, an observable, and rebuilds on changes.

You can go here for more examples

Observer #

Observer(Widget Function(BuildContext context) builder)

The builder function will be monitored by MobX and tracks all the observables that are being used inside it. When any of the observables change, builder will be called again to rebuild the Widget. This gives you a seamless way to create a reactive Widget.

Note that the Observer will print a warning if no observables are discovered in the builder function.

0.3.2 - 0.3.3+1 #

  • Errors that occur internal to the setState() call are now reported via FlutterError.reportError so they don't go unnoticed by the user.
  • Added a version constant that matches the pubspec.yaml

0.3.0 - 0.3.1+1 #

  • Adapting to the API changes in mobx 0.3.0
  • Formatting changes
  • Using StackTrace.current as the name for an Observer, when not provided. This helps in quickly jumping to the location of the Observer-usage during debugging.
  • Docs update

0.2.3+1 #

  • Observer is relaying the exception caught during the tracking phase. This is done using the errorValue field present on the reaction instance.

0.2.2 #

  • CHANGELOG updates which got missed out in previous versions
  • The Observer does not trap exceptions occurring during the build() anymore. Previously, this used to be the case, which made it difficult to get proper stack traces.

0.2.1+1 #

  • README updates

0.2.1 #

  • Upgrading to use the 0.2.1 version of mobx, which makes it compatible with the latest beta/dev/master channels

0.2.0 #

  • Upgrading to use the 0.2.0 version of mobx

0.0.2 - 0.1.3 #

  • Warn when no observables are found in the Observer's builder function. This was originally an AssertionError, which was deemed to be too strong and caused apps to crash in debug mode.
  • Updates to tests
  • Updates to documentation

0.0.1 - First release. #

  • Observer component that re-renders when reactive variables change.

example/README.md

Examples #

Counter #

The default example that you get when you create a new Flutter app. Now flavored with MobX :-).

Jump to Source

Todos #

Can't miss out on the Todos! It's a classic way of showcasing a framework.

Jump to Source

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  flutter_mobx: ^0.3.3+1

2. Install it

You can install packages from the command line:

with Flutter:


$ flutter pub get

Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


import 'package:flutter_mobx/flutter_mobx.dart';
  
Popularity:
Describes how popular the package is relative to other packages. [more]
96
Health:
Code health derived from static analysis. [more]
100
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
100
Overall:
Weighted score of the above. [more]
98
Learn more about scoring.

We analyzed this package on Sep 20, 2019, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.5.0
  • pana: 0.12.21
  • Flutter: 1.9.1+hotfix.2

Platforms

Detected platforms: Flutter

References Flutter, and has no conflicting libraries.

Dependencies

Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.2.0 <3.0.0
flutter 0.0.0
mobx ^0.3.0 0.3.8+1
Transitive dependencies
collection 1.14.11 1.14.12
meta 1.1.7
sky_engine 0.0.99
typed_data 1.1.6
vector_math 2.0.8
Dev dependencies
flutter_test
mockito ^4.0.0