# 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 * 轻量级Flutter状态管理库,支持局部刷新和状态缓存。 # 使用方式 # 支持 1.obs ''.obs [].obs {}.obs 初始化方式, 该方式不支持缓存 ```dart //***************************************************** // 使用示例: //***************************************************** 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), ) ], ); } } ``` # 支持缓存 ```dart //***************************************************** // 使用示例: //***************************************************** 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), ) ], ); } } ``` # 不支持缓存 ```dart //不支持缓存 class NoCacheCounterState { int counter = 0; } //使用方式 var observableCounter = Observable(NoCacheCounterState()); //缓存 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; } } //使用方式 var observableCounter = Observable(CacheCounterState(), cacheKey: 'CounterState_CacheKey', decoder: CacheCounterState.fromJson); ``` # 相关引用库和项目 * [xanno](https://pub.dev/packages/xanno) (使用注解简化开发 @GApi @GAssets @GColor @GEntity @GFormatter @GHttp @GIconFont @GProject @GRoute @GSize.)