如何在条件变化中显示列表?

时间:2019-08-08 09:29:13

标签: flutter

我有一个列表,显示从数据库中选择的所有数据。现在,我想实现一个条件,以仅选择和显示当前DateTime的数据列表。

示例:显示一个列表,其中List.year = DateTime().year

我应该如何编码以制作类似的东西?

class CustomListView extends StatelessWidget {

  final List<Spacecraft> spacecrafts;

  CustomListView(this.spacecrafts);

  Widget build(context) {

  return ListView.builder(

     itemCount: spacecrafts.length,

     itemBuilder: (context, int currentIndex) {

      return createViewItem(spacecrafts[currentIndex], context);

     },
   ); 
  }

   Widget createViewItem(Spacecraft spacecraft, BuildContext context) {

        var itemDate = spacecraft.startDate;
        var currentDate =  new DateTime.now() ;

        return new ListTile(
                       .....

2 个答案:

答案 0 :(得分:0)

从数据库中获取列表或使用where时,都必须过滤列表,如下所示:

class FilteredListView extends StatelessWidget {
  final int year;
  final List<Spacecraft> filteredSpacecrafts;

  CustomListView(List<Spacecraft> allSpacecrafts, this.year) : 
    filteredSpacecrafts = allSpacecrafts.where(
      (spacecraft) => spacecraft.year == year).toList();

  Widget build(context) {

  return ListView.builder(

     itemCount: filteredSpacecrafts.length,

     itemBuilder: (context, int currentIndex) {

      return createViewItem(filteredSpacecrafts[currentIndex], context);

     },
   ); 
  }
...

答案 1 :(得分:0)

嗯,您有两个选择。 1.选择应用条件的数据 2.从数据库中选择整个数据,并在显示之前对其进行过滤。

您可以选择最适合您的项目的任何内容。

有多种方法可以过滤列表。示例:

_resignedEmployees = allEmployees.where((emp) => emp.isResigned).toList();

您还可以准备一个单独的列表并显示。下面的示例代码:

allEmployees.forEach((f) {

   if (f.name == _searchText) {
     _searchList.add(f);
   }
   return _searchList ;
}