【问题标题】:context.select isn't defined for BuildContextcontext.select 没有为 BuildContext 定义
【发布时间】:2021-02-11 01:02:13
【问题描述】:

为什么我不能使用 Provider 的任何扩展方法(context.selectcontext.readcontext.listen)?

我收到这样的静态错误。

没有为类型“BuildContext”定义方法“select”。试试 将名称更正为现有方法的名称,或定义一个 名为“选择”的方法..

class MyWidget extends StatelessWidget {
  

  @override
  Widget build(BuildContext context) {

    // Following line causes the problem
    var isFavorite = context.select<FavModel, bool>(
      (fav) => fav.items.contains(item),
    );

    return OtherWidget(...);
  }
}

【问题讨论】:

  • 您应该在此文件中导入提供程序包。
  • 是的,屏幕截图是我发布的代码的一部分,并且包已导入
  • 您的提供程序版本是什么?
  • provider: ^3.0.0
  • 你应该upgrade

标签: flutter dart


【解决方案1】:

context.selectcontext.readcontext.listen 是来自 Provider 的 extension methods。要使用它们,您应该导入 Provider。

将此添加到您的文件顶部:

import 'package:provider/provider.dart';

默认情况下应该是自动导入的。这是一个已知的issue

【讨论】:

  • 在我的情况下应该是 import 'package:flutter_bloc/flutter_bloc.dart';感谢您的提示!
【解决方案2】:

您好,如果使用riverpod 并收到contect.read 的错误消息 添加这一行

 import 'package:flutter_riverpod/flutter_riverpod.dart';

【讨论】:

    【解决方案3】:

    我在 VS Code 中使用 Bloc,在调用 context.read 时出现此错误。这个错误是因为我没有导入 bloc 库。这就是为什么我得到这种类型的错误。确保您已导入相关库。在我的情况下

    import 'package:flutter_bloc/flutter_bloc.dart';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-01
      • 2021-09-17
      • 2021-07-26
      • 2021-04-15
      • 2021-06-19
      • 2018-12-06
      • 2019-09-25
      • 1970-01-01
      相关资源
      最近更新 更多