flutter isar数据库搜索栏

1zmg4dgp  于 2022-12-30  发布在  Flutter
关注(0)|答案(2)|浏览(228)

大家好,
我是 dart 新手
我开始使用isar数据库,一切都很好
但我的搜索有问题
我创建搜索函数

getAll(String search) async* {
    final isar = await db;
    final query = isar.books
        .where()
        .filter()
        .titleContains(search)
        .build();

    await for (final results in query.watch(fireImmediately: true)) {
      if (results.isNotEmpty) {
        yield results;
      }
    }
  }

然后在TextField中添加Search i主屏幕,如下所示:

onChanged: (value) {
isarService.getAll(search: value);
}


但不和我一起工作我尝试了一切但没有工作
为我的英语感到悲哀

yb3bgrhw

yb3bgrhw1#

在getAllBooks()中,只需删除.build()

Stream<List<Book>> getAllBooks({String? search}) async* {
print(search);
final isar = await db;
final query = isar.books
    .where()
    .filter()
    .titleContains(search ?? '', caseSensitive: false);

await for (final results in query.watch(fireImmediately: true)) {
  if (results.isNotEmpty) {
    yield results;
  }
}
}

在StatefulWidget中转换book_list_screen.dart类,并使用一个变量。

String search = ""; //for searching

在TextField的onChanged()中

onChanged: (value) {
            
    setState(() {
                search = value;
              });
             
            },

并在Expanded小部件中使用类似以下内容

Expanded(
    child: StreamBuilder<List<Book>>(
          stream: widget.isarService.getAllBooks(search: search),
  builder: (context, snapshot) {
      ...
  }
            ),

aiazj4mn

aiazj4mn2#

也许你该等着他的React

onChanged: (value) async {
await isarService.getAll(search: value);
}

相关问题