使用 Riverpod 时是否可以保存全局 ref 对象
Can a global ref object be saved when using Riverpod
情况如下:网络请求使用的dio有自定义的拦截器。拦截器的onResponse方法判断如果serverreturnscode==404,就会触发用户的注销操作,一些数据会随着注销操作被清除。例如:
flutter_riverpod: ^1.0.0-dev.7
RequestInterceptor.dart
class RequestInterceptor extends InterceptorsWrapper {
@override
void onResponse(Response response, ResponseInterceptorHandler handler) {
if (response.data['code'] == 404) {
// Force users to log out
// ref.read(userProvider).logout();
}
// ...
}
}
但是如何获取 ref 对象来获取 userProvider?
你不知道。
相反,在提供程序中创建您的 RequestInterceptor 并将“ref”对象传递给它
class Example {
Example(this.ref);
final Ref ref;
}
final provider = Provider((ref) => Example(ref));
情况如下:网络请求使用的dio有自定义的拦截器。拦截器的onResponse方法判断如果serverreturnscode==404,就会触发用户的注销操作,一些数据会随着注销操作被清除。例如:
flutter_riverpod: ^1.0.0-dev.7
RequestInterceptor.dart
class RequestInterceptor extends InterceptorsWrapper {
@override
void onResponse(Response response, ResponseInterceptorHandler handler) {
if (response.data['code'] == 404) {
// Force users to log out
// ref.read(userProvider).logout();
}
// ...
}
}
但是如何获取 ref 对象来获取 userProvider?
你不知道。
相反,在提供程序中创建您的 RequestInterceptor 并将“ref”对象传递给它
class Example {
Example(this.ref);
final Ref ref;
}
final provider = Provider((ref) => Example(ref));