日志和错误报告
Riverpod 本身提供了一种监听提供者程序树中发生的所有事件的方法。
这可用于记录所有事件,或向远程服务报告错误。
这是通过使用 ProviderObserver
类并将其传递给
ProviderScope
/ProviderContainer
来实现的。
定义 ProviderObserver
ProviderObserver 是一个应该被扩展的类。
它提供了各种可以重写的方法来监听事件:
didAddProvider
,当提供者程序被添加到组件树时调用didUpdateProvider
,当提供者程序更新时调用didDisposeProvider
,当提供者程序被处置时调用providerDidFail
,当同步的提供者程序抛出错误时
class MyObserver extends ProviderObserver {
void didAddProvider(
ProviderBase<Object?> provider,
Object? value,
ProviderContainer container,
) {
print('Provider $provider was initialized with $value');
}
void didDisposeProvider(
ProviderBase<Object?> provider,
ProviderContainer container,
) {
print('Provider $provider was disposed');
}
void didUpdateProvider(
ProviderBase<Object?> provider,
Object? previousValue,
Object? newValue,
ProviderContainer container,
) {
print('Provider $provider updated from $previousValue to $newValue');
}
void providerDidFail(
ProviderBase<Object?> provider,
Object error,
StackTrace stackTrace,
ProviderContainer container,
) {
print('Provider $provider threw $error at $stackTrace');
}
}
使用 ProviderObserver
现在我们已经定义了观察者,我们需要使用它。
为此,我们应该将其传递给 ProviderScope
或 ProviderContainer
:
runApp(
ProviderScope(
observers: [
MyObserver(),
],
child: MyApp(),
)
);
final container = ProviderContainer(
observers: [
MyObserver(),
],
);