我有一个型号列表:
class Model {
final DateTime date;
final String text;
Model({this.date, this.text});
}
List<Model> _models = [
Model(date: DateTime(2018, 9, 1), text: 'Text1',),
Model(date: DateTime(2018, 9, 1), text: 'Text2',),
Model(date: DateTime(2018, 9, 2), text: 'Text3',),
Model(date: DateTime(2018, 9, 3), text: 'Text4',),
Model(date: DateTime(2018, 8, 31), text: 'Text7',),
Model(date: DateTime(2018, 9, 3), text: 'Text5',),
Model(date: DateTime(2018, 9, 3), text: 'Text6',),
];
我想要实现的是从每个模型中获取date参数,并将所有与该日期匹配的模型放入ListView()中。因此,我可以返回每个日期的模型列表。每次我将数据添加到列表时,我都希望它自动更新和按日期排序(没有手动内容)。日期格式在这里并不重要。问题:我该如何实现?
这就是我想要的样子:
2018/9/3
文字4
文字5
文字6
2018/9/2
文字3
2018/9/1
文字1
文字2
2018/8/31
文字7
答案 0 :(得分:1)
使用现有小部件的简便解决方案;您可以使用side_header_list_view(https://pub.dartlang.org/packages/side_header_list_view)
示例:
Widget _buildList(){
return new SideHeaderListView(
itemCount: _models.length,
itemExtend: 100.0,
headerBuilder: (BuildContext context, int index) {
return Text(_models[index].date);
},
itemBuilder: (BuildContext context, int index) {
return new Card(
child: Text(_models[index].text),
);
},
hasSameHeader: (int a, int b) {
return _models[a].date == _models[b].date;
},
);
}
还没有测试它,理想情况下应该可以工作,只要提供,您可能需要对字符串类型进行某种日期格式化,然后再将其提供给Text。暂时将其视为伪代码。