关于 riverpod-getting-started
riverpod-getting-started 是 Riverpod 入门技能,面向 Flutter 和 Dart 开发者,介绍安装、Provider 设置、代码生成及 lint 配置。
主要功能
- 01Flutter 与 Dart 安装步骤
- 02配置 ProviderScope 或 ProviderContainer
- 03Provider 的基础示例
- 04代码生成设置
- 05riverpod_lint 配置
适用场景
- 01为 Flutter 项目添加 Riverpod
- 02在纯 Dart 项目中读取 Provider
- 03启用代码生成并运行构建器
- 04为 Riverpod 配置 lint 规则
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ serverpod/ skills-registry --skill riverpod-getting-started安装后在 Claude Code 中输入/riverpod-getting-started确认已加载。
详细介绍
Riverpod — 快速入门
说明
安装软件包
Riverpod 提供主软件包(Flutter:flutter_riverpod;仅 Dart:riverpod)。可选软件包可添加代码生成和 hooks。
Flutter:
flutter pub add flutter_riverpod
使用代码生成:
flutter pub add flutter_riverpod riverpod_annotation
flutter pub add dev:riverpod_generator build_runner
仅 Dart:
dart pub add riverpod
使用代码生成:
dart pub add riverpod riverpod_annotation
dart pub add dev:riverpod_generator build_runner
手动配置 pubspec.yaml(Flutter):
dependencies:
flutter:
sdk: flutter
flutter_riverpod: ^2.0.0 # use latest from pub.dev
dev_dependencies:
build_runner:
riverpod_generator: ^2.0.0 # if using code generation
然后运行 flutter pub get(仅 Dart 项目则运行 dart pub get)。
如果使用代码生成,请运行:
dart run build_runner watch -d
注意: 部分 Riverpod 软件包可能需要使用 Flutter beta 通道,才能与最新版本的 json_serializable 兼容。如果 pub get 失败,请尝试运行 flutter channel beta,或使用 Riverpod <=3.1.0。
使用 ProviderScope 包装应用
Widget 需要 ProviderScope(Flutter)或 ProviderContainer(Dart)才能读取 Provider。
Flutter — ProviderScope:
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
void main() {
runApp(
ProviderScope(
child: MyApp(),
),
);
}
仅 Dart — ProviderContainer:
final container = ProviderContainer();
final value = container.read(helloWorldProvider);
print(value);
// Don't forget to container.dispose() when done
Hello world(使用代码生成的 Flutter)
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'main.g.dart';
@riverpod
String helloWorld(Ref ref) {
return 'Hello world';
}
void main() {
runApp(ProviderScope(child: MyApp()));
}
class MyApp extends ConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
final String value = ref.watch(helloWorldProvider);
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: const Text('Example')),
body: Center(child: Text(value)),
),
);
}
}
运行 dart run build_runner build(或 watch)以生成 main.g.dart。如果不使用代码生成,可以使用手动定义的 Provider(例如 final helloWorldProvider = Provider<String>((ref) => 'Hello world');),并采用相同的 ProviderScope + ConsumerWidget 模式。
启用 riverpod_lint
通过 analysis_options.yaml 添加可选的 lint 工具:
plugins:
riverpod_lint: ^2.0.0 # use latest from https://pub.dev/packages/riverpod_lint
它提供 Riverpod 的 lint 规则和重构功能。完整列表请参阅 riverpod_lint 软件包页面。
深入了解
- 代码生成和 hooks: 请参阅 riverpod-codegen-and-hooks 技能(或文档:关于代码生成、关于 hooks)。
- VS Code / Android Studio: 可以考虑安装 Flutter Riverpod Snippets 扩展,以便更快地编写样板代码。