我正在尝试在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
我想做的是在屏幕加载时列出框的内容。我似乎无法弄清楚哪里出了问题-任何指导将不胜感激!
答案 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 类型,如下所示:ValueListenableBuilder