如何从FlutterHive中检索Hive

axr492tv  于 2021-06-25  发布在  Hive
关注(0)|答案(2)|浏览(471)

我需要帮助检索数据从FlutterHive使用hivelist和下面的错误
hiveerror:要使用此列表,必须首先打开“”框。e/Flutter(3001):#0 hivelistimpl.box“
我正在尝试从下面的示例链接实现配置单元关系,但还没有用于检索数据的示例。
https://www.reddit.com/r/flutterdev/comments/ee5gti/hive_v120_supports_relationships_inheritance_and/
编辑代码以打开标题和详细信息框。仍然没有机会加载数据。

  1. static Future<List<SaleTicket>> getAllSaleTickets() async {
  2. final _saleTicketBox = await Hive.box<SaleTicket>(_hive.SALE_TICKET_BOX);
  3. final _saleTicketHeaderBox = await Hive.box<SaleTicketHeader>(_hive.SALE_TICKET_COL_BOX);
  4. final _saleTicketHeader = (_saleTicketBox.isEmpty || _saleTicketBox.values.isEmpty)
  5. ? SaleTicketHeader()
  6. : _saleTicketHeaderBox.values.firstWhere((t) => t.id=1);
  7. _saleTicketHeader.saleTickets = HiveList(_saleTicketBox); // open ticket box
  8. return _saleTicketHeader.saleTickets.toList();

}

xqk2d5yq

xqk2d5yq1#

这是一条令人困惑的错误消息,但应该是因为您必须在hivelist中指定泛型类型,就像打开时一样。

  1. _saleTicketHeader.saleTickets = HiveList<SaleTicket>(_saleTicketBox);

所以,hive.box和hivelist的类型是不匹配的。

m2xkgtsf

m2xkgtsf2#

通过hivelist键循环使其工作。不知道这是不是最好的办法?

  1. static Future<List<SaleTicket>> getAllSaleTickets() async {
  2. final _saleTicketBox = await Hive.box<SaleTicket>('sale_ticket_box');
  3. final _saleTicketHeaderBox = await Hive.box<SaleTicketHeader>('sale_ticket_header_box');
  4. final _saleTicketHeader = (_saleTicketHeaderBox.isEmpty || _saleTicketHeaderBox.values.isEmpty) ? SaleTicketHeader() : _saleTicketHeaderBox.values.firstWhere((t) => t.id = 1);
  5. var saleTicketList = <SaleTicket>[];
  6. _saleTicketHeader.saleTickets.**keys.forEach**((key) {
  7. saleTicketList.add(_saleTicketBox.get(key));
  8. });
  9. }
  10. class SaleTicket extends HiveObject{
  11. @HiveField(0)
  12. String TicketName;
  13. ...
  14. }
  15. class SaleTicketHeader extends HiveObject{
  16. @HiveField(0)
  17. String TicketHeaderName;
  18. ...
  19. @HiveField(1)
  20. HiveList<SaleTicket> saleTickets;
  21. }
展开查看全部

相关问题