Flutter:没有为“Box”类型定义方法“listenable”(使用 Hive)
Posted
技术标签:
【中文标题】Flutter:没有为“Box”类型定义方法“listenable”(使用 Hive)【英文标题】:Flutter: The method 'listenable' isn't defined for the type 'Box' (using 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
我要做的是在屏幕加载时列出框的内容。我似乎无法弄清楚我哪里出错了 - 任何指导将不胜感激!
【问题讨论】:
【参考方案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 类型,如下所示:ValueListenableBuilder
【讨论】:
以上是关于Flutter:没有为“Box”类型定义方法“listenable”(使用 Hive)的主要内容,如果未能解决你的问题,请参考以下文章
Flutter:没有为“Object”类型定义运算符“[]”。尝试定义运算符'[]'
Flutter - 错误:没有为“对象”类型定义吸气剂“文档”
Flutter Hive getter 没有为“hiveobjectmixin”类型定义