首页 > 解决方案 > 在 ChipBuilder 中显示建议列表

问题描述

我已经在一个问题上工作了 7 天,并且(即使在找到 Flutter 开发人员的帮助之后)找不到应该是一个非常简单的选项的解决方案。

我有一个表单字段芯片生成器,我希望在用户开始输入字段时显示一个可能选项的列表。

我已经从 Firestore 集合中调用了该列表,并且可以将其打印出来以显示在控制台中 - 但我无法让 Chip Builder 获取它

var options1;
  void getOptions() async {
    DocumentReference documentReference = FirebaseFirestore.instance
        .collection("options")
        .doc("P6E5TbwxN0cofTk8K4ge");
    documentReference.get().then((datasnapshot) {
      if (datasnapshot.exists) {
        final options1 = datasnapshot.data()['options'];
        print(options1);
        return options1;
      } else {
        print("No such options");
      }
    });
  }

查询有效,并在控制台中显示可用选项。

这是 Chip Builder 代码,它可以工作,但似乎无法从 options1 变量中收集列表:

findSuggestions: (String query) {
 if (query.isNotEmpty) {
  var lowercaseQuery =
   query.toLowerCase();
  return options1.where(
   (options1) => options1
   .toLowerCase()
   .contains(
     query.toLowerCase())
     .toList());
 } else {
  print('empty');
  return const [];
  }
 },

如果我不从 Firestore 中查询列表,并按照以下创建选项变量,那么 Chip Builder 可以正常工作并显示来自该变量的选项列表:

final options1 = [
'Option 1',
'Option 2',
'Option 3'
]

为什么 getOptions() 函数中的选项变量列表不显示选项?

标签: formsflutterdartgoogle-cloud-firestore

解决方案


也许你可以试试这个

return options1.where((element) => element.toLowerCase().contains(lowercaseQuery));

推荐阅读