如何读取哨兵事件处理器内的Riverpod提供程序



我正在使用Sentry+Riverpod,我想添加一个EventProcessor。但是,必要的数据存储在提供者内部。我该怎么读?

final myProvider = StateProvider((ref) => 0);
class CustomSentryEventProcessor implements EventProcessor {
@override
Future<SentryEvent?> apply(SentryEvent event, {hint}) async {
return event.copyWith(
user: (event.user ?? SentryUser()).copyWith(
extras: {
'myState': ???, // <-- how to read provider?
}
),
);
}
}

在您的情况下,可以这样做:

final myProvider = StateProvider((ref) => 0);
class CustomSentryEventProcessor implements EventProcessor {
CustomSentryEventProcessor(this._ref);
final Ref _ref;
Reader get _reader => _ref.read;
static final pr = Provider<CustomSentryEventProcessor>((ref) => CustomSentryEventProcessor(ref));
@override
Future<SentryEvent?> apply(SentryEvent event, {hint}) async {
return event.copyWith(
user: (event.user ?? SentryUser()).copyWith(
extras: {
'myState': _reader(myProvider), // <-- how to read provider?
}
),
);
}
}

并调用这样的方法:

class Widget extends ConsumerWidget {
const Widget({
Key? key,
}) : super(key: key);
@override
Widget build(BuildContext context, WidgetRef ref) {
/// ...
ref.read(CustomSentryEventProcessor.pr).apply(event);
/// ...
return ;
}
}

最新更新