Flutter-Riverpod使用记录
最近学习Flutter,然后难免要接触到Provider,但是听说如果项目过于庞大则不好使用,然后推荐使用Riverpod,至此写一下使用记录,主要是怕忘记了怎么使用后面好翻回来找找。
1、前置条件
-
main.dart中的runApp,需要使用ProviderScope包裹App,这样才能全局随意调用
-
使用riverpod之前一定要保证你的widget返回的是Consumer,因为我们要使用他的builder中的ref,可以说他将原来的provider进行了进一步分装,至此使用者不需要关心Provider的初始化,只需要调用就可以了。
-
最好不要写注解,容易爆炸
2、provider配置
final globalParamsProvider = Provider((ref) => {"data": "全局参数123"});
建议直接像上面这样使用Provider((ref)=>{})返回参数,这是只读的
class GlobalParamsNotifier extends StateNotifier<Map<String, String>> {
GlobalParamsNotifier() : super({"data": "全局参数123"});
void update(String key, dynamic value) {
state = {...state, key: value};
}
}
final globalParamsProvider =
StateNotifierProvider<GlobalParamsNotifier, Map<String, String>>(
(ref) => GlobalParamsNotifier(),
name: 'globalParamsProvider',
);
这是可读写的
3、使用
var data = ref.watch(globalParamsProvider);
直接这样获取,然后就会返回数据
ref.read(globalParamsProvider.notifier)
获取类方便调用方法更新