首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dart Riverpod:未定义的类“WidgetRef”

Dart Riverpod:未定义的类“WidgetRef”
EN

Stack Overflow用户
提问于 2021-08-10 13:07:42
回答 1查看 2K关注 0票数 9

我正在浏览Riverpod包文档,出于某种原因,“入门”中的基本示例是抛出错误:

未定义的类“WidgetRef”。尝试将名称更改为现有类的名称,或创建名为“WidgetRef”的类。

代码语言:javascript
复制
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),
        ),
      ),
    );
  }
}

pubspec.yaml

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-10 13:47:54

在您的发布规范中,您已经指定了flutter_riverpod: ^0.14.0+3,而WidgetRef只能从1.0.0版本中获得(该版本目前是一个开发版本,而不是一个完整版本)。

在您的Riverpod版本中,可以使用ConsumerWidget,如下所示:

代码语言:javascript
复制
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

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68727448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档