consumer 1.0.2 copy "consumer: ^1.0.2" to clipboard
consumer: ^1.0.2 copied to clipboard

outdated

consumer is like react-consumer state manage, use Stream at dart, consumer have memo and shoudWidgetUpdate function to intercept update.

consumer #

中文文档

consumer is like react-consumer state manage, use Stream at dart.

Feature #

  • consumer not need Provider at root Widget.
  • consumer can ease create sub StateManager at detail modules.
  • consumer use memo to intercept update, like react.Hooks.
  • consumer is tiny and ease use, only 3 API:
    • getState
    • setState
    • build

API Document:

If your need use old API, please use consumer: 0.1.4;

Install consumer #

Change pubspec.yaml:

dependencies:
  consumer: ^1.0.2

Getting Started #

It's Flutter default example, we use Consumer change StateFulWidget to StatelessWidget:

import 'package:flutter/material.dart';
void main() => runApp(MyApp());

// *** definition a state ***
class ExampleState {
  int counter = 0;
}

// *** create a consumer ***
var consumer = Consumer(ExampleState());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Consumer Demo Home Page'),
    );
  }
}

class MyHomePage extends StatelessWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  _incrementCounter() {
    // *** Update some widget ***
    consumer.setState((state) => state.counter++);
  }

  @override
  Widget build(BuildContext context) {
    print('only run once');

    return Scaffold(
      appBar: AppBar(
        title: Text(title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'You have pushed the button this many times:',
            ),
            // *** Use consumer.build connect to widget ***
            consumer.build(
              memo: (state) => [state.counter],
              builder: (ctx, state) {
                print('Update when state.counter change');
                return Text(
                  '$state.counter',
                  style: Theme.of(context).textTheme.display1,
                );
              },
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ),
    );
  }
}

That's all #

Thank you read and use consumer

3
likes
0
pub points
80%
popularity

Publisher

unverified uploader

consumer is like react-consumer state manage, use Stream at dart, consumer have memo and shoudWidgetUpdate function to intercept update.

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

flutter

More

Packages that depend on consumer