如何使用riverpod_annotation创建非自动销毁的Provider?
如何用riverpod_annotation生成普通Provider
观测场景
使用riverpod_annotation编写如下代码创建Provider时:
import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'foo.g.dart'; @riverpod String foo(FooRef ref) => 'foo';
生成的实例是AutoDisposeProvider<String>,但预期是普通的Provider(手动创建的示例如下):
final fooProvider = Provider((ref) => 'foo');
问题
如何通过riverpod_annotation生成普通的Provider?
补充信息
依赖配置
dependencies: flutter_riverpod: ^2.3.0 riverpod_annotation: ^2.0.0 dev_dependencies: build_runner: ^2.3.3 riverpod_generator: ^2.0.0
Flutter环境
Flutter (Channel stable, 3.7.6, on macOS 13.2.1 22D68 darwin-arm64, locale en-EE)
解决方案
在@riverpod注解中添加keepAlive: true参数即可生成普通的Provider,修改后的代码如下:
import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'foo.g.dart'; @riverpod(keepAlive: true) String foo(FooRef ref) => 'foo';
添加该参数后,生成的代码会自动使用普通Provider而非默认的AutoDisposeProvider。
内容的提问来源于stack exchange,提问作者user9836706
相关产品推荐
相关产品推荐

