未定义名称“duplicateItems”。尝试将名称更正为已定义的名称,或定义名称

问题描述 投票:0回答:1

未定义名称“duplicateItems”。 尝试将名称更正为已定义的名称,或定义名称。
我已经将其修复到另一个仍然遇到同样问题的问题。

class view_problem extends StatefulWidget {
  @override
  State<view_problem> createState() => _view_problemState();
}

class _view_problemState extends State<view_problem> {
  List<problemModel> problemlist = [];
  StreamController _streamController = StreamController();
  Future getAllProblem() async {
    problemlist = await problemcontrollers().getProblem();
    _streamController.sink.add(problemlist);
  }

  @override
  void initState() {
    // TODO: implement initState
    Timer.periodic(Duration(seconds: 1), (timer) {
      getAllProblem();
    });
    super.initState();
  }

  void _filterSearch(String query) {
    setState(() {
      problemlist = duplicateItems
          .where((item) => item.toLowerCase().contains(query.toLowerCase()))
          .toList();
    });
  }
flutter listview search
1个回答
0
投票

您尚未在函数甚至全局变量中定义重复项。您必须在使用它之前定义它。天气重复项目是一个字符串、整数或其他类型代码不知道,所以我们必须提到定义它。在你的情况下,我猜它是一个字符串列表,因为它是一个搜索函数,所以我的答案是相应的。

更新答案:这里我还进行了更改,以便当搜索查询中有空格时,它仍然会为您提供有效的结果。

void _filterSearch(String query) {
   if (query.isNotEmpty) {
      List<ApptUsersModel> dummyListData = [];
      _dummySearchList.forEach((element) {
        var fullName = (element.firstname!+element.lastname!).trim();
        if (fullName.toLowerCase().contains(query.toLowerCase().replaceAll(' ', '').trim())) {
          dummyListData.add(element);
        }
      });
      Utility.log("Length of dummyListData is --> ${dummyListData.length}");

      setState(() {
        _searchResultList.clear();
        _searchResultList.addAll(dummyListData);
        Utility.log(
            "Length of _searchResultList in if is --> ${_searchResultList.length}");
      });
      return;
    }
  }
© www.soinside.com 2019 - 2024. All rights reserved.