繁体   English   中英

如何在flutter中将子级的可点击按钮添加到DropdownMenuItem中?

[英]How to add a clickable button to a DropdownMenuItem as a child in flutter?

我正在尝试将DateTimePicker添加到dropdown menu以便用户可以通过它选择特定的date clicked dropDropdownMenuItem后如何显示DateTimePicker 我已包含以下代码。

import 'package:flutter/material.dart';
import 'dart:async';

class CustomDropDown extends StatefulWidget {
  DateTime selectedEndDate = new DateTime.now();

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

class _CustomDropDownState extends State<CustomDropDown> {
  var _value = '1';

  DateTime selectedDate = DateTime.now();

  Future<Null> _selectDate(BuildContext context) async {
    final DateTime picked = await showDatePicker(
        context: context,
        initialDate: selectedDate,
        firstDate: DateTime(2015, 8),
        lastDate: DateTime(2101));
    if (picked != null && picked != selectedDate)
      setState(() {
        selectedDate = picked;
        widget.selectedEndDate = picked;
      });
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      child: DropdownButton(
      items: [
        DropdownMenuItem(
          value: "1",
          child: InkWell(
            child: Text(
              'Forever',
              style: TextStyle(color: Colors.teal, fontSize: 23),
            ),
            onTap: () => (widget.selectedEndDate = DateTime(2100)),
          ),
        ),
        DropdownMenuItem(
          value: "2",
          child: InkWell(
            onTap: () => _selectDate(context),
            child: Text(
              'Select end date: ${selectedDate.day}/${selectedDate.month}/${selectedDate.year}',
              style: TextStyle(color: Colors.teal, fontSize: 23),
            ),
          ),
        ),
      ],
      onChanged: (val) => setState(() {
        _value = val;
      }),
      value: _value,
      style: TextStyle(color: Colors.teal, fontSize: 23),
      isExpanded: true,
    ));
  }
}

您可以检查在onChange()中选择的值:

onChanged: (val) => 
   setState(() {
   if (val == "2") {
     //Display select date
   }
   _value = val;
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM