我有一个列表,显示从数据库中选择的所有数据。现在,我想实现一个条件,以仅选择和显示当前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(
.....
答案 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 ;
}