【问题标题】:How to show initial date in Cupertino Date Picker Field如何在库比蒂诺日期选择器字段中显示初始日期
【发布时间】:2019-10-31 08:57:53
【问题描述】:

这是一个带有 Cupertino 日期选择器的小表格。 我想在表格上显示初始日期。点击文本字段时,它将显示一个日期选择器,一旦选择了新日期,它将显示新日期

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

const double _kPickerSheetHeight = 216.0;

class AddCashPage extends StatefulWidget {
  @override
  _AddCashPageState createState() => _AddCashPageState();
}

class _AddCashPageState extends State<AddCashPage> {
  final _formKey = GlobalKey<FormState>();
  DateTime date = DateTime.now();
  DateTime newDateTime;

  @override
  Widget build(BuildContext context) {
    return Container(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          Form(
            key: _formKey,
            child: buildTextFormField(),
          ),
        ],
      ),
    );
  }

  Widget buildTextFormField() {
    return Column(
      children: <Widget>[
        GestureDetector(
          onTap: () {
            showCupertinoModalPopup<void>(
              context: context,
              builder: (BuildContext context) {
                return _buildBottomPicker(
                  CupertinoDatePicker(
                    mode: CupertinoDatePickerMode.date,
                    initialDateTime: date,
                    onDateTimeChanged: (DateTime addSelectedDate) {
                      setState(() {
                        this.newDateTime = addSelectedDate;
                           date = newDateTime;
                      });
                    },
                  ),
                );
              },
            );
          },
          child: _buildMenu(
            <Widget>[
              //Show initial date here
              Text(
                DateFormat.yMMMMd().format(newDateTime),
              ),
            ],
          ),
        ),
      ],
    );
  }


}

我已将date = newDateTime; 添加到setStateText(DateFormat.yMMMMd().format(newDateTime),) 仍然显示为空。我正在考虑使用三元运算符,或者有更好的方法

【问题讨论】:

    标签: flutter cupertinopicker


    【解决方案1】:

    使用initState方法设置newDateTime的初始值

    void initState() {
     super.initState();
     newDateTime = DateTime.now();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-27
      • 1970-01-01
      • 1970-01-01
      • 2019-07-10
      • 1970-01-01
      • 2014-01-09
      • 2019-08-22
      • 1970-01-01
      相关资源
      最近更新 更多