1

此代码示例工作正常。

var box = await Hive.openBox<MainWords>('mainWords');
box.values.where((item)  {
      return item.category == "6" || item.category == '13';
    }).toList();

我正在尝试使用 whereIn 条件过滤列表,但它必须像过滤

List<String> categoryList = ['6', '13'];
var box = await Hive.openBox<MainWords>('mainWords');
box.values.where((item)  {
      return item in categoryList; // just an examle
    }).toList();

我怎样才能做到这一点?

4

1 回答 1

1

您不应该使用关键字in,而是使用方法contains来检查您是否item存在于内部categoryList。此外,您无法比较不同类型的值,我看到您返回的box.valuesIterable<MainWords>.

我不知道这个类的内容,但item变量是类型的MainWords,所以不能String直接与对象进行比较。

我假设您可以访问String班级中的某个值,MainWords因此您需要将该值与您的列表进行比较。

代码示例

List<String> categoryList = ['6', '13'];
var box = await Hive.openBox<MainWords>('mainWords');

// As I don't know what are MainWords' properties I named it stringValue.
box.values.where((item) => categoryList.contains(item.stringValue)).toList();
于 2021-05-03T00:20:05.560 回答