[译][官方文档] Flutter/Dart 状态管理库 Riverpod (十四)- 概要 - 日志和错误报告

原文链接:Logging and error reporting | Riverpod

pub:riverpod | Dart Package (flutter-io.cn)

译时版本: 2.4.9


之前翻译过 Riverpod 的官方文档,现在随着版本更新,官方文档又多了很多新内容,所以再补充翻译一下。

之前翻译过的内容,现在官方文档有中文了。
Flutter状态管理库Riverpod官方文档翻译汇总 - 掘金 (juejin.cn)


日志和错误报告

Riverpod原生提供了监听 provider 树中发生的所有事件的手段。

这可以用来记录所有事件的日志,或向远程服务报告错误。

这是通过使用 ProviderObserver 类并把它传递给 ProviderScope/ProviderContainer 实现的。

定义 ProviderObserver

ProviderObserver 是应当被继承的类。

它提供了多种可被重写的方法来监听事件:

  • didAddProvider ,当 provider 被添加到 provider 树时调用
  • didUpdateProvider ,当 provider 被更新时调用
  • didDisposeProvider ,当 provider 被清除时调用
  • providerDidFail ,当同步 provider 抛出错误时调用
dart 复制代码
class MyObserver extends ProviderObserver {
  @override
  void didAddProvider(
    ProviderBase<Object?> provider,
    Object? value,
    ProviderContainer container,
  ) {
    print('Provider $provider was initialized with $value');
  }

  @override
  void didDisposeProvider(
    ProviderBase<Object?> provider,
    ProviderContainer container,
  ) {
    print('Provider $provider was disposed');
  }

  @override
  void didUpdateProvider(
    ProviderBase<Object?> provider,
    Object? previousValue,
    Object? newValue,
    ProviderContainer container,
  ) {
    print('Provider $provider updated from $previousValue to $newValue');
  }

  @override
  void providerDidFail(
    ProviderBase<Object?> provider,
    Object error,
    StackTrace stackTrace,
    ProviderContainer container,
  ) {
    print('Provider $provider threw $error at $stackTrace');
  }
}

使用 ProviderObserver

现在定义了一个 observer (观察者),下面要使用它。

要使用它,应当将其传递给 ProviderScopeProviderContainer

less 复制代码
runApp(
  ProviderScope(
    observers: [
      MyObserver(),
    ],
    child: MyApp(),
  )
);
ini 复制代码
final container = ProviderContainer(
  observers: [
    MyObserver(),
  ],
);

相关推荐
孤鸿玉10 小时前
Fluter InteractiveViewer 与ScrollView滑动冲突问题解决
flutter
叽哥17 小时前
Flutter Riverpod上手指南
android·flutter·ios
BG1 天前
Flutter 简仿Excel表格组件介绍
flutter
zhangmeng1 天前
FlutterBoost在iOS26真机运行崩溃问题
flutter·app·swift
恋猫de小郭2 天前
对于普通程序员来说 AI 是什么?AI 究竟用的是什么?
前端·flutter·ai编程
卡尔特斯2 天前
Flutter A GlobalKey was used multipletimes inside one widget'schild list.The ...
flutter
w_y_fan2 天前
Flutter 滚动组件总结
前端·flutter
醉过才知酒浓2 天前
Flutter Getx 的页面传参
flutter
火柴就是我3 天前
flutter 之真手势冲突处理
android·flutter
Speed1233 天前
`mockito` 的核心“打桩”规则
flutter·dart