flutter - Dart Riverpod:未定义的类'WidgetRef'
问题描述
我正在阅读 Flutter Riverpod包文档,出于某种原因,“入门”中的基本示例抛出错误:
未定义的类“WidgetRef”。尝试将名称更改为现有类的名称,或创建一个名为“WidgetRef”的类。
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
final helloWorldProvider = Provider((_) => 'Hello World');
void main() {
runApp(
ProviderScope(child: MyApp()),
);
}
class MyApp extends ConsumerWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context, WidgetRef ref) {
final String value = ref.watch(helloWorldProvider);
return MaterialApp(
home: Scaffold(
body: Center(
child: Text(value),
),
),
);
}
}
发布规范.yaml
environment:
sdk: ">=2.12.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^1.0.2
flutter_riverpod: ^0.14.0+3
dev_dependencies:
flutter_test:
sdk: flutter
解决方案
在您的 pubspec 中您已指定flutter_riverpod: ^0.14.0+3
,而WidgetRef
仅适用于 1.0.0 版本(目前是开发版本,而不是完整版本)。
在您的 Riverpod 版本中,您可以使用 ConsumerWidget,如下所示:
class MyApp extends ConsumerWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context, ScopedReader watch) {
final String value = watch(helloWorldProvider);
return MaterialApp(
home: Scaffold(
body: Center(
child: Text(value),
),
),
);
}
}
或者,您可以升级到flutter_riverpod: ^1.0.0-dev.6
推荐阅读
- javascript - 在类函数之间传输控制流 webdriverio
- tcp - netcat 监听器会在一段时间后停止?
- react-native - 如何在 SectionList 内的子引用上使用 measure 方法?
- python - 如何填充线条之间的区域
- spring-boot - Spring Boot War 文件未在 websphere 8.5 中运行
- java - ReactiveMongo 模板。计数忽略限制功能
- python - Django modelcluster:何时/如何使 cached_properties 无效?
- laravel - Laravel 页面没有点击 url
- excel - 参考另一个工作表中的标题
- r - R中所有样本的预测