有了riverpod_generator,我可以使用:
@riverpod
int foo(FooRef ref) => 0;
Run Code Online (Sandbox Code Playgroud)
这相当于:
final fooProvider = Provider((ref) => 0);
Run Code Online (Sandbox Code Playgroud)
FutureProvider但我怎样才能为其他提供商(如、等)做同样的事情StateProvider呢?
我正在使用riverpod_generator,但我没有看到任何让提供者保持活力的方法。生成器代码实际上相当于
final fooProvider = FutureProvider.autoDispose((ref) async => 0);
Run Code Online (Sandbox Code Playgroud)
但在上面的代码中我可以删除autoDispose但如何使用@riverpod生成器做到这一点?
@riverpod
Future<int> foo(FooRef ref) async {
return 0; // Where to define `autoDispose`?
}
Run Code Online (Sandbox Code Playgroud) 我有存储库,并为该存储库生成提供程序,如下所示:
@riverpod
class Repository extends _$Repository {
@override
String? build() {
return null;
}
Future<void> fetchData() async {
state = "Hello World!";
}
}
Run Code Online (Sandbox Code Playgroud)
我想测试我的应用程序。在测试中我想模拟这个存储库的提供者。但我有来自 Riverpod_lint 的消息:Providers which are overridden in a non-root ProviderContainer/ProviderScope should specify dependencies.。
我的测试如下所示:
@riverpod
class MockedRepository extends _$MockedRepository implements Repository {
@override
String? build() {
return null;
}
Future<void> fetchData() async {
state = "Hello Mocked World!";
}
}
void main() {
testWidgets('override repositoryProvider', (tester) async {
await tester.pumpWidget(
ProviderScope(
overrides: [
repositoryProvider.overrideWith(() …Run Code Online (Sandbox Code Playgroud) 我正在尝试提供一个GoRouterwith的实例riverpod。但是,这会导致显示“Riverpod_generator 包不支持 ChangeNotifier 值”警告:
我的问题是,实现这一目标的正确方法是什么?