Мой список просмотра дублирует данные о поиске в строке поиска, я не могу найти проблему в течение нескольких дней. Вот мой полный код.
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:atrack/commonimplentations/groupmembers.dart';
import 'package:atrack/commonimplentations/membersdetails.dart';
//HERE IS THE MAIN CLASS TO DISPLAY DATA FROM A FIRESTORE
class SearchMembers extends StatelessWidget {
final groupName;
List<GroupMembers> list=List();
SearchMembers({this.groupName });
@override
Widget build(BuildContext context) {
final groupUsers = Provider.of<List<Members>>(context);
groupUsers.forEach((groupUser) {
list.add(GroupMembers(groupUser.username,groupName));
});
return Scaffold(
appBar: new AppBar(
title:Text('Search Member'),
backgroundColor:Colors.redAccent,
actions:<Widget>[
IconButton(
icon:Icon(Icons.search),onPressed:(){
showSearch(context: context, delegate: MembersData(membersList:list,GroupName: groupName));
},
)
]
),
body: new ListView(
padding:EdgeInsets.symmetric(vertical:8.0),
children:_buildList()
),
);
}
List<GroupMembers> _buildList() {
return list;
}
}
class MembersData extends SearchDelegate<String>{
List membersList;
final String GroupName;
MembersData({this.membersList,this.GroupName});
List<GroupMembers> returnList(){
return membersList;
}
@override
List<Widget> buildActions(BuildContext context) {
// ACTIONS ON THE APPBAR
return[
IconButton(
icon:Icon(Icons.clear),onPressed:(){
query="";
}
)
];
}
@override
Widget buildLeading(BuildContext context) {
// LEADING ICON OF THE APPBAR
return IconButton(
icon:AnimatedIcon(
icon:AnimatedIcons.menu_arrow,
progress:transitionAnimation,
),onPressed:(){
close(context, null);
},
);
}
@override
Widget buildResults(BuildContext context) {
// SHOW RESULTS
}
@override
Widget buildSuggestions(BuildContext context) {
// WHEN USER SEARCHES SOMETHING
List<GroupMembers> buildSearchList(){
List<GroupMembers> searchList=List();
if(query.isEmpty){
return membersList;
}
else{
membersList.forEach((groupmember){
if(groupmember.name.contains(query.toUpperCase())){
searchList.add(groupmember);
}
});
return searchList.toSet().toList();
}
}
return ListView(
padding:EdgeInsets.symmetric(vertical:8.0),
children:buildSearchList()
);
}
}
В первой сборке он отлично отображает данные в виде списка, но при поиске дублирует данные, каждый раз, когда я начинаю поиск в строке поиска, данные дублируются в отображаемом списке любая помощь будет высоко оценена.