如何在颤动中创建递增日期列表?

问题描述 投票:0回答:1

我正在尝试创建一个包含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,
          ),
        ),
      ],
    );
  }
}
flutter dart widget
1个回答
0
投票

您应该返回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)));
© www.soinside.com 2019 - 2024. All rights reserved.