功能:
1.数据共享
2.局部刷新
api详解
暴漏一个值
1 | Provider( |
读取一个值
MyModel yourValue = Provider.of
同理:暴漏和读取多个值
Provider 最基础的provider,它会获取一个值并将它暴露出来
ListenableProvider 用来暴露可监听的对象,该provider将会监听对象的改变以便及时更新组件状态
ChangeNotifierProvider ListerableProvider依托于ChangeNotifier的一个实现,它将会在需要的时候自动调用ChangeNotifier.dispose方法
ValueListenableProvider 监听一个可被监听的值,并且只暴露ValueListenable.value方法
StreamProvider 监听一个流,并且暴露出其最近发送的值
FutureProvider 接受一个Future作为参数,在这个Future完成的时候更新依赖
watch
flutter 中 Builder 详解
Builder的builder方法中我们传入了一个context,这个context是当前builder的context,我们可以通过这个context来获取到一些平时比较难获取到的对象。
1 | Widget build(BuildContext context) { |
StatefulBuilder 有状态的builder
LayoutBuilder可以提供父widget的大小。
StreamBuilder 类本质是一种Widget。可以监听流的状态
小部件重建是由每个交互调度的,使用[State.setState],
StreamBuilder<List
stream: noteHelper.watchNotes(folder),
initialData: const [],
builder: (context, snapshot) {
})
FutureBuilder
AnimatedBuilder
使用预构建的子组件可以提高效率。
1 | AnimatedBuilder( |
Flutter MVC设计模式
Model (数据库中数据)
View (页面Widget)
Controller (页面逻辑控制)
Flutter 设计思路
flutter_riverpod
hooks_riverpod
go_router
freezed
基于riverpod的MVVM设计模式
Model 数据对象
View 即Widget
ViewModel 即provider + StateNotifer,支持数据变化和业务逻辑
flutter学习:
freezed
riverpod_generator
go_router_builder
go_router
push、go、modal
1 | //用户角色 |