This is not production ready. Please wait for the first release.
Fstate - Flutter-first State Management
This project is an experimental state management library for Flutter. You can find a roadmap here.
Separation of State and UI
Develop state and UI separately and wire them up declaratively.
f(state) = UI
Declarative Dependency Injection with Reactive State
No imperative dependency
No imperative reactivity
Easy timing control
(TODO) Safe side-effect
On lifecycle
On Actions
(TODO) Fstate Inspector - Easy to Debug
(TODO) Definitely Declarative Routing - File-based routing
Router also has a state and is reactive to the state. Flutter provides declarative routing via Router API, but it's cumbersome to implement.
TODO
xSimple injectionxSimple selectorxSimple alternatorxSimple widget builderxAsync selectorxAsync actionxState from the selectorxFamilyxError/Loading widget builderxAuto disposeObserver - "Side-effect" (state lifecycle)before initafter initbefore actionafter actionbefore disposeafter dispose
Isolate-based- Since v3.7, flutter supports background isolate platform channels. This is a good opportunity to make fstate isolate-based.
Error/Loading Boundary WidgetTestabilityOverridable stateState only testWidget test
Reset stateEnhance DXMulti step generation for better DX - reduce the number of annotationsStatic State InspectorLive State InspectorVScode extension
File-based routing
Contributions
Run test
Install dependencies for tests
dart pub global activate coverage
dart pub global activate full_coverage
and install lcov and genhtml for coverage report.
Run tests
Each package has scripts/run_test.sh to run tests.