我正在使用 Riverpod 进行状态管理,并希望设置 Amplitude 进行跟踪。我使用生成器设置了一个提供程序,如下所示:
@riverpod
Amplitude amplitudeProvider(AmplitudeProviderRef ref) {
final Amplitude amplitude = Amplitude.getInstance();
amplitude.init(Env.amplitudeApiKey);
return amplitude;
}
但是当我尝试用
来阅读它时final amplitude = ref.read(amplitudeProvider);
我收到错误
The argument type 'Amplitude Function(ProviderRef)' can't be assigned to the parameter type 'ProviderListenable'.
当我通过代码生成手动设置提供程序时,一切正常。但由于您不应该混合生成的和非生成的提供程序,我有点陷入困境。有谁明白这是从哪里来的吗?
工作原理如下:
final amplitudeProvider = Provider<Amplitude>((ref) {
final Amplitude amplitude = Amplitude.getInstance();
amplitude.init(Env.amplitudeApiKey);
return amplitude;
});
别忘了添加:
文件顶部的部分
'name_of_your_file.g.dart'
那么你的方法应该是:
@riverpod
Amplitude amplitude(AmplitudeRef ref) {
final Amplitude amplitude = Amplitude.getInstance();
amplitude.init(Env.amplitudeApiKey);
return amplitude;
}
生成器将生成
amplitudeProvider