[译][官方文档] 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(),
  ],
);

相关推荐
静水流深zz1 天前
Flutter AI Harness 如何让 Agent 参与软件开发全流程
android·前端·人工智能·flutter·大前端
SoaringHeart2 天前
Flutter最佳实践:Web项目中文字体首次加载乱码问题解决
前端·flutter
程序员老刘2 天前
Flutter 3.47 更新要点:Material 正式分家,老项目先别急着更新
flutter·ai编程·客户端
stringwu2 天前
Flutter Generative UI 深度架构剖析与官方 SDK 实战
flutter
唐诺2 天前
flutter StreamController 完全使用指南
flutter·stream
GitLqr3 天前
玩转 Flutter 中的 Stack 与 Positioned:解决 UI 重叠问题的实战指南
flutter·面试·全栈
唔663 天前
flutter web iOS 在浏览器加载中文慢的问题
前端·flutter·ios
恋猫de小郭3 天前
Jetpack Compose 8 月版正式发布,核心模块 1.12
android·前端·flutter
梦想的颜色4 天前
AI 时代小白 VibeCoding 做 APP:UniApp(含 Uni‑X)、Flutter 与 React Native+Expo全维度技术选型对比指南
flutter·react native·app·uniapp·vibecoding·unippx·app产品