首页 > 解决方案 > 在 dart 中搜索列表和列表中的剩余单词

问题描述

void main(){
List<String> topics = [
  'Photography',
  'News',
  'Facts',
  'How-to',
  'Technology',
  'Science',
  'Space',
];
  
 var text='tech';
 var _searchResult = topics.where(
                    (topics) => (topics.contains(text) || 
                    topics.toLowerCase().contains(text))
                );
  
 print(_searchResult.toString());
}

我有一个大约 50-60 个单词的列表。如果我搜索“技术”,它将显示“技术”,但我也想要剩余的词(像那样)......

Technology
Photography
News
Facts
How-to
Science
Space

标签: listflutterdartsearch

解决方案


你可以使用这个技巧。

final result = {..._searchResult, ...topics}.toList();

它创建一个地图,您的过滤值首先放入其中。该地图会删除重复项并生成完整列表。

完整代码

List<String> topics = [
  'Photography',
  'News',
  'Facts',
  'How-to',
  'Technology',
  'Science',
  'Space',
];

void main() {
  final text = 'tec';
  final _searchResult = topics
      .where((i) => i.toLowerCase().contains(text.toLowerCase()))
      .toList();

  final result = {..._searchResult, ...topics}.toList();
  
  print(result); // [Technology, Photography, News, Facts, How-to, Science, Space]
}

推荐阅读