You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 05:38:20