Flutter:未为“ Box”类型定义“ listenable”方法(使用Hive)

时间:2020-07-03 08:44:48

标签: flutter

我正在尝试在Hive之后使用this读取Box的内容,但是出现以下错误:

未为类型“ 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

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

3 个答案:

答案 0 :(得分:13)

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

import 'package:hive_flutter/hive_flutter.dart';

答案 1 :(得分:1)

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

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

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

你很高兴去使用,盒子,价值可听,建设者......等

答案 2 :(得分:0)

在使用@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>