颤抖:搜索时Listview不会更新

问题描述

一切正常,但是ListView不在onChanged上更新。虽然我正在使用setstate,但是它仍然没有过滤数据。注意(列表已在我打印时被过滤。唯一的问题是屏幕没有更新)

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:travel_together_passenger/Models/user.dart';
import 'package:travel_together_passenger/Screens/User_Available_Carpools_TILE.dart';

class User_AvailableCarpools_LIST extends StatefulWidget {

  @override
  _User_AvailableCarpools_LISTState createState() =>
      _User_AvailableCarpools_LISTState();
}

class _User_AvailableCarpools_LISTState
    extends State<User_AvailableCarpools_LIST> {
  @override
  Widget build(BuildContext context) {
    final checkcarpools = Provider.of<List<CarpoolDataShow>>(context) ?? [];
    final availablecarpools =
        checkcarpools.where((element) => element.seats > 0).toList() ?? [];
    List filteredcarpools =
        checkcarpools.where((element) => element.seats > 0 ).toList() ?? [];
    return Scaffold(
      body: Column(
        children: [
          Expanded(
              child: TextField(
            decoration: InputDecoration(hintText: 'Search..'),onChanged: (text) {
              setState(() {
                filteredcarpools = availablecarpools
                    .where((element) => element.pickupaddress
                        .toLowerCase()
                        .contains(text.toLowerCase()))
                    .toList();
              });
            },)),Expanded(
            flex: 10,child: ListView.builder(
              itemCount: filteredcarpools.length,itemBuilder: (context,index) {
                return User_AvailableCarpools_TILE(filteredcarpools[index]);
              },),],);
  }
}

解决方法

以下代码正在运行。非常感谢pskink给了我提示。


import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:travel_together_passenger/Models/user.dart';
import 'package:travel_together_passenger/Screens/User_Available_Carpools_TILE.dart';

class User_AvailableCarpools_LIST extends StatefulWidget {

  @override
  _User_AvailableCarpools_LISTState createState() => _User_AvailableCarpools_LISTState();
}

class _User_AvailableCarpools_LISTState extends State<User_AvailableCarpools_LIST> {
  String txt = '';
  @override
  Widget build(BuildContext context) {

    final checkcarpools = Provider.of<List<CarpoolDataShow>>(context) ?? [];
    final availablecarpools =
        checkcarpools.where((element) => element.seats > 0).toList() ?? [];
    List filteredcarpools =
    availablecarpools.where((element) => element.pickupaddress.toLowerCase().contains(txt.toLowerCase())).toList() ?? [];
    return Scaffold(
      body: Column(
        children: [
          Expanded(
            child: TextField(
              decoration: InputDecoration(
                  hintText: 'search..'
              ),onChanged: (text)
              {
                setState(() {
                  txt=text;
                });
                print(filteredcarpools);
              },),Expanded(
            flex: 10,child: ListView.builder(
              //shrinkWrap: true,key: UniqueKey(),itemCount: filteredcarpools.length,itemBuilder: (context,index) {
 //               print(filteredcarpools);
                return User_AvailableCarpools_TILE(filteredcarpools[index]);
              },],);
  }
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...