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