dart 问题与实现我的搜索栏(fuzzywuzzy)Flutter

zdwk9cvp  于 2023-09-28  发布在  Flutter
关注(0)|答案(1)|浏览(102)

我正在使用flutter的fuzzywuzzy包,我不知道为什么,但它说我的结果变量为空。
你们能帮我解释一下为什么吗?
我想要result的值,我试着把它放在await语句中,但它说result为null

Future<List<DocumentSnapshot>> performFuzzySearch(String searchText) async {
    final querySnapshot = await FirebaseFirestore.instance.collection('Question Papers').get();

    final searchResults = querySnapshot.docs.where((doc) {
        print(doc["Keywords"]);
        print(searchText);
        final result = extractOne(query: searchText,
                           choices: doc["Keywords"],
                           cutoff: 10,
                       );
        if (result.score >= 80) {
            return true;
        }

        return true;
    }).toList();

    searchResults.sort(
        (a, b) => b['Votes'].compareTo(
            a['Votes'],
        ),
    );

    return searchResults;
}

我的错误在于结果

qij5mzcb

qij5mzcb1#

如果extractOne没有找到足够接近的匹配,它将返回null。在访问其score属性之前检查结果是否为null。
我修改了你的密码。希望这对你有用。

Future<List<DocumentSnapshot>> performFuzzySearch(String searchText) async {
  final querySnapshot = await FirebaseFirestore.instance
      .collection('Question Papers')
      .get();

  final searchResults = querySnapshot.docs.where((doc) {
    print(doc["Keywords"]);
    print(searchText);
    
    final result = extractOne(
      query: searchText,
      choices: doc["Keywords"],
      cutoff: 10,
    );

    if (result != null && result.score >= 80) {
      return true;
    }

    return false;
  }).toList();

  searchResults.sort(
    (a, b) => b['Votes'].compareTo(a['Votes']),
  );

  return searchResults;
}

相关问题