【问题标题】:Flutter: The method 'listenable' isn't defined for the type 'Box' (using Hive)Flutter:没有为“Box”类型定义方法“listenable”(使用 Hive)
【发布时间】:2020-10-23 23:03:46
【问题描述】:

我正在尝试使用 Hive 读取 Box 的内容,遵循 this SO 评论,但我收到以下错误:

没有为类型“Box”定义方法“listenable”

有问题的代码是:

FutureBuilder(
      future: Hive.openBox<Contact>('testBox'),
      builder: (context, snapshot) {
        return ValueListenableBuilder(
          valueListenable: Hive.box<Contact>('contacts').listenable(),
          builder: (context, Box<Contact> box, _) {
            if (box.values.isEmpty) {
              return Text('data is empty');
            } else {
              return ListView.builder(
                itemCount: box.values.length,
                itemBuilder: (context, index) {
                  var contact = box.getAt(index);
                  return ListTile(
                    title: Text(contact.name),
                    subtitle: Text(contact.age.toString()),
                  );
                },
              );
            }
          },
        );
      },
    ),

pubspec.yaml:

hive: ^1.4.1+1
hive_flutter:
  git:
    url: git://github.com/hivedb/hive.git
    path: hive_flutter

我要做的是在屏幕加载时列出框的内容。我似乎无法弄清楚我哪里出错了 - 任何指导将不胜感激!

【问题讨论】:

    标签: flutter


    【解决方案1】:

    解决方法:需要先导入hive_flutter.dart

    import 'package:hive_flutter/hive_flutter.dart';

    【讨论】:

    • 关于 IDE 是否表示未使用 hive_flutter 的导入以及 .listenable() 仍会抛出“未为类型 'Box' 定义方法 'listenable' 的任何建议。”错误?
    • @ZachSmith,我通过导入 hive 和 hive_flutter 的两个包解决了这个问题: Import 'package:hive/hive.dart';导入'包:hive_flutter/hive_flutter.dart';
    【解决方案2】:

    获取 Hive 的最高升级版本,(目前是)hive: ^2.0.4 获取最新版本的 Hive_Flutter(当前)hive_flutter: ^1.0.0

    请在您的工作空间中全部导入

    import 'package:hive_flutter/hive_flutter.dart';
    import 'package:hive/hive.dart';
    

    而且你很好去使用,Box,Value-Listenable,Builder...等等。

    【讨论】:

      【解决方案3】:

      使用@MrJax 的回答后,如果您收到如下错误:'The method 'listenable' is not defined for the type 'Box',您应该导入两个 hive 包:

      import 'package:hive_flutter/hive_flutter.dart';
      import 'package:hive/hive.dart';
      

      并为 ValueListenableBuilder 小部件分配 Box 类型,如下所示:ValueListenableBuilderContact>>

      【讨论】:

        猜你喜欢
        • 2021-10-19
        • 2021-08-21
        • 2020-10-01
        • 2021-10-04
        • 2021-02-09
        • 2019-08-14
        • 2021-09-02
        • 2020-09-02
        • 2021-08-02
        相关资源
        最近更新 更多