A simple and flexible state management library for flutter.
Getting started
flutter pub add channel_store
Usage
Predefined the data mutation.
import 'package:channel_store/store.dart';
class CountStore extends Store<int> {
CountStore() : super(0);
@override
reducer(state, event) {
if (event == "increment") {
return state + 1;
}
if (event == "decrement") {
return state - 1;
}
return state;
}
}
Dispatch event and get fresh data.
import 'package:channel_store/channel_store.dart';
import 'package:example/store.dart';
import 'package:flutter/material.dart';
void main() {
runApp(const MaterialApp(home: ChannelProvider(child: MyCounter())));
}
class MyCounter extends StatefulWidget {
const MyCounter({super.key});
@override
State<MyCounter> createState() => _MyCounterState();
}
class _MyCounterState extends State<MyCounter> with ChannelMixin {
@override
Widget build(BuildContext context) {
return StoreProvider(
store: CountStore(),
child: Scaffold(
body: Column(
children: [
Consumer<CountStore>(
builder: (context, store, child) => Text("${store.state}"),
),
TextButton(
onPressed: () => dispatch("increment"),
child: const Text("Increment"),
),
TextButton(
onPressed: () => dispatch("decrement"),
child: const Text("Decrement"),
),
],
),
),
);
}
}