flutter - 如何找到 flutter 中的两个日期之间的差异?

标签 flutter dart flutter-layout

我正在尝试一个flutter应用程序,该应用程序可以计算两个日期之间的差异并以天为单位显示。

但是由于某种原因,我无法理解正确的逻辑。我创建了足够的变量来保存当前日期,并创建了另一个变量来保存旧日期,但是仍然缺少一些东西。

我用了FLutter_datetime_picker包。

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_datetime_picker/flutter_datetime_picker.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData.dark(),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key}) : super(key: key);

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    final currentDate = DateTime.now();
    final oldDate = DateTime.tryParse();
    final difference = currentDate.difference(oldDate).inDays;
    return Scaffold(
      body: Row(
        children: <Widget>[
          Center(
            child: RaisedButton(
                child: Text("data"),
                onPressed: () => DatePicker.showDatePicker(context,
                        showTitleActions: true,
                        currentTime: currentDate,
                        minTime: DateTime(1990, 1, 1), onConfirm: (date) {
                      setState(() {
                        date = oldDate;
                      });
                      print(difference);
                    })),
          ),
          Text(difference.toString())
        ],
      ),
    );
  }
}

最佳答案

您可以像这样在onConfirm方法中选择新日期时计算出差异:

class _MyHomePageState extends State<MyHomePage> {
  DateTime currentDate = DateTime.now();
  String difference = "";

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Row(
        children: <Widget>[
          Center(
            child: RaisedButton(
              child: Text("data"),
              onPressed: () => DatePicker.showDatePicker(
                context,
                showTitleActions: true,
                currentTime: currentDate,
                minTime: DateTime(1990, 1, 1),
                onConfirm: (date) {
                  setState(() {
                    difference = "${currentDate.difference(date).inDays}";
                  });
                  print(difference);
                },
              ),
            ),
          ),
          Text(difference),
        ],
      ),
    );
  }
}

关于flutter - 如何找到 flutter 中的两个日期之间的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58366449/

相关文章:

flutter - 如何使 onTap 只响应实际文本而不是整个 ListTile 宽度

android - 设备不适用于 "main.dart"配置,

flutter - 使用 Navigator.push (MaterialPageRoute) 而不是 AlertDialog

flutter - 底板被键盘覆盖

Flutter 错误 : Type 'File' not found. 这是怎么回事?

sqlite - 如何使 SUM 函数在 SQLITE(Sqflite) 中返回一个整数而不是一个字符串?

flutter - 滚动 TabBarView 子项时使 SliverAppBar 可滚动

系统状态下的Flutter容器

flutter - 如何更新变量以显示一些文本,有延迟,然后更新另一个也显示文本的变量?

inheritance - Dart :用查询替换ViewChildren