颤抖:搜索时Listview不会更新

如何解决颤抖:搜索时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]);
              },],);
  }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?