我正在尝试创建一个包含60个日期的列表,每个日期都从扑朔迷离的当前日期开始,每个日期都会增加一天。但是它不起作用,只是停留在当前日期。
我的代码:
import 'package:flutter/material.dart';
class UpComingPage extends StatefulWidget {
UpComingPage({Key key}) : super(key: key);
@override
_UpComingPageState createState() => _UpComingPageState();
}
class _UpComingPageState extends State<UpComingPage> {
@override
Widget build(BuildContext context) {
final items = List<DateTime>.generate(60, (i) {
DateTime date = DateTime.utc(
DateTime.now().year,
DateTime.now().month,
DateTime.now().day,
);
date.add(Duration(days: i));
return date;
});
return CustomScrollView(
slivers: <Widget>[
SliverAppBar(
title: Text('Title'),
centerTitle: true,
),
SliverList(
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) {
return ListTile(
title: Text('${items[index]}'),
);
},
childCount: items.length,
),
),
],
);
}
}
您应该返回date.add(Duration(days: i))
,因为DateTime.add method实际上并没有修改实例,而是返回了一个已更改的新实例。
final items = List<DateTime>.generate(60, (i) =>
DateTime.utc(
DateTime.now().year,
DateTime.now().month,
DateTime.now().day,
).add(Duration(days: i)));