# observable_builder **Repository Path**: 337317439/observable_builder ## Basic Information - **Project Name**: observable_builder - **Description**: 轻量级Flutter状态管理库,支持局部刷新和状态缓存。 - **Primary Language**: Dart - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-04-07 - **Last Updated**: 2022-05-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README Language: [English](https://gitee.com/337317439/observable_builder/blob/master/README.md) | [中文简体](https://gitee.com/337317439/observable_builder/blob/master/README-ZH.md)

Packages: [observable_builder](https://pub.dev/packages/observable_builder) # observable_builder * Lightweight Flutter state management library with support for local refreshes and state caching. # Use # support 1.obs ''.obs [].obs {}.obs, nocache ```dart //***************************************************** // use the example: //***************************************************** class TestWidget extends StatefulWidget { @override _TestWidgetState createState() => _TestWidgetState(); } class _TestWidgetState extends State { final countObs = 0.obs; @override void initState() { observableCounter.listen((state) { print(state.current); }); super.initState(); } @override Widget build(BuildContext context) { return Column( children: [ ObservableBuilder( create: countObs, memo: (state) => [state.current], builder: (context, state) { return Text('${state.current}'); }, ), IconButton( onPressed: () => countObs.notify((state) => state.current++), icon: Icon(Icons.add), ) ], ); } } ``` # support the cache ```dart //***************************************************** // use the example: //***************************************************** class CounterState { int counter = 0; } var observableCounter = Observable(CounterState()); class TestWidget extends StatefulWidget { @override _TestWidgetState createState() => _TestWidgetState(); } class _TestWidgetState extends State { @override void initState() { observableCounter.listen((state) { print(state.counter); }); super.initState(); } @override Widget build(BuildContext context) { return Column( children: [ ObservableBuilder( create: observableCounter, memo: (state) => [state.counter], builder: (context, state) { return Text('${state.counter}'); }, ), IconButton( onPressed: () => observableCounter.notify((state) => state.counter++), icon: Icon(Icons.add), ) ], ); } } ``` # support the nocache ```dart //NoCache class NoCacheCounterState { int counter = 0; } //use var observableCounter = Observable(NoCacheCounterState()); //Cache class CacheCounterState { int counter; CacheCounterState({this.counter = 0}); static CacheCounterState fromJson(dynamic json) { return CacheCounterState( counter: json["counter"], ); } Map toJson() { final Map data = Map(); data['counter'] = this.counter; return data; } } //use var observableCounter = Observable(CacheCounterState(), cacheKey: 'CounterState_CacheKey', decoder: CacheCounterState.fromJson); ``` # related reference libraries and projects * [xanno](https://pub.dev/packages/xanno) (use annotations to simplify development @GApi @GAssets @GColor @GEntity @GFormatter @GHttp @GIconFont @GProject @GRoute @GSize.)