首页 > 解决方案 > 颤振:如何将蜂巢监视绑定到 getx 中的 RxList 对象

问题描述

我正在一起使用 hive 和 getx,我正在尝试使用以下watch方法获取 hive 中的所有数据:

   Stream<List<VocabularyModel>> watchVocabsFromdb() => hiveService.vocabularyBox
      .watch()
      .map((event) => hiveService.vocabularyBox.values
          .where((element) => element.remember == true)
          .toList());

在控制器中我使用这种方法:

class WordsController extends GetxController {
  WordsController();
  late Stream<List<VocabularyModel>> allVocabs;
  @override
  void onReady() {
    log.info('onReady');
    super.onReady();

    allVocabs = repository.watchVocabsFromdb();
  }

内部视图我正在使用 Obx 来捕捉蜂巢箱的变化:

  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: Obx(() => ListView.builder(
          itemCount: controller.allVocabs.length, ///... Future<int> is not int
              itemBuilder: (context, index) {
                return Container();
              },
            )),
      ),

如何使用 hive 之类的 obs 列表?

标签: flutterflutter-getxflutter-hive

解决方案


更改late Stream<List<VocabularyModel>> allVocabs;为 RxList:

final allVocabs = RxList<VocabularyModel>([]);

然后onInit()将您的流绑定到它:

allVocabs.bindStream(repository.watchVocabsFromdb());

之后,您可以像往常一样使用Obx或观察它GetX


推荐阅读