# 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.)