Повторяющиеся данные ListView при наборе текста на панели поиска - PullRequest
0 голосов
/ 08 марта 2020

Мой список просмотра дублирует данные о поиске в строке поиска, я не могу найти проблему в течение нескольких дней. Вот мой полный код.

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()

     );
  }
}

В первой сборке он отлично отображает данные в виде списка, но при поиске дублирует данные, каждый раз, когда я начинаю поиск в строке поиска, данные дублируются в отображаемом списке любая помощь будет высоко оценена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...