Android studio 在“颤振”的“警报”对话框中添加下拉菜单

Android studio 在“颤振”的“警报”对话框中添加下拉菜单,android-studio,drop-down-menu,dart,flutter,android-alertdialog,Android Studio,Drop Down Menu,Dart,Flutter,Android Alertdialog,当我试图在我的flatter应用程序的警报对话框中添加带有日期和时间选择器的下拉菜单时,我遇到了UI呈现问题。我已经尝试解决这个问题很长一段时间了,但是没有用。这是我得到的输出: 我的代码: import 'dart:async'; import 'package:flutter/material.dart'; import 'package:firebase_database/firebase_database.dart'; import 'package:tes

当我试图在我的flatter应用程序的警报对话框中添加带有日期和时间选择器的下拉菜单时,我遇到了UI呈现问题。我已经尝试解决这个问题很长一段时间了,但是没有用。这是我得到的输出:

我的代码:

    import 'dart:async';

   import 'package:flutter/material.dart';
   import 'package:firebase_database/firebase_database.dart';
   import 'package:test_prep/utils/Reminder.dart';
   import 'package:intl/intl.dart';

 class RemindersPage extends StatefulWidget {
 @override
_RemindersPageState createState() => _RemindersPageState();
 }

class _RemindersPageState extends State<RemindersPage> {
final TextEditingController _titleController = new 
TextEditingController();

List<DropdownMenuItem<Future>> dateDrop = [];
List<DropdownMenuItem<Future>> timeDrop = [];
int selected = null;


void loadDateData() {
dateDrop = [];
dateDrop.add(new DropdownMenuItem(
  child: new Text('Pick Date'),
  value: _selectedDate(context),
));
}

void loadTimeData() {
 timeDrop = [];
 timeDrop.add(new DropdownMenuItem(
  child: new Text('Pick a Time'),
  value: _selectedTime(context),
));
}

@override
Widget build(BuildContext context) {
导入'dart:async';
进口“包装:颤振/材料.省道”;
导入“package:firebase_database/firebase_database.dart”;
导入“package:test_prep/utils/rementer.dart”;
导入“包:intl/intl.dart”;
类提醒页面扩展StatefulWidget{
@凌驾
_提醒页面状态createState()=>_提醒页面状态();
}
类_提醒页面状态扩展状态{
最终文本编辑控制器\u标题控制器=新建
TextEditingController();
List dateDrop=[];
列表时间差=[];
int selected=null;
void loadDateData(){
dateDrop=[];
添加(新的DropdownMenuItem)(
子项:新文本(“拾取日期”),
值:_selectedDate(上下文),
));
}
void loadTimeData(){
时间差=[];
添加(新的下拉菜单项)(
子项:新文本(“选择时间”),
值:_selectedTime(上下文),
));
}
@凌驾
小部件构建(构建上下文){
//loadDateData(); //loadTimeData()

返回脚手架(
背景颜色:Colors.black87,
正文:列(子项:[]),
//浮动动作按钮
floatingActionButton:新的floatingActionButton(
工具提示:“添加物品”,
背景颜色:Colors.greenAccent,
孩子:新的ListTile(
标题:图标(
Icons.add,
),
),
按下时:_showFormDialog),
底部导航栏:新主题(
数据:主题(上下文)
.copyWith(画布颜色:颜色。灰色,原色:
颜色(白色),
子项:新的底部导航栏(
项目:[
新海底导航气压计(
图标:新图标(图标。过滤器\u无),
标题:新文本(“提醒”),
新海底导航气压计(
图标:新图标(图标。全部显示),标题:新文本(“测验”))
],
onTap:(inti)=>debugPrint(“您点击了$i”),
),
),
);
}
//警报对话框
void_showFormDialog(){
var alert=新建警报对话框(
标题:文本(“设置提醒”),
内容:列(子项:[
扩大(
孩子:TextField(
控制器:\标题控制器,
自动对焦:对,
装饰:输入装饰(
labelText:“提醒的名称”,
hintText:“例如,星期四考试!”,
图标:图标(Icons.title),
),
),
),
//日期
_dropDownDate(),
//时间
_停机时间()
]),
行动:[
新扁平按钮(
按下时:()=>debugPrint(“保存按钮”),子项:
文本(“保存”),
新扁平按钮(
onPressed:()=>Navigator.pop(上下文),子项:
文本(“取消”)
],
);
显示对话框(
上下文:上下文,
建筑商:(){
返回警报;
});
}
//日期和时间选择器
DateTime _date=new DateTime.now();
TimeOfDay _time=新的TimeOfDay.now();
Future\u selectedDate(构建上下文)异步{
选择的最终日期时间=等待showDatePicker(
上下文:上下文,
初始日期:_日期,
firstDate:新日期时间(2018年),
最后日期:新日期时间(2019年);
如果(已拾取!=null){
debugPrint('所选日期:${u Date.toString()}');
设置状态(){
_日期=已拾取;
});
}
}
Future\u selectedTime(构建上下文)异步{
最后一天的时间=
等待showTimePicker(上下文:上下文,初始时间:_time);
如果(已拾取!=null&&picked!=\u时间){
debugPrint('所选时间:${u Time.toString()}');
设置状态(){
_时间=已拾取;
});
}
}
_下载日期{
var drop_date=容器(
子级:行(mainAxisAlignment:mainAxisAlignment.start,子级:
[
下拉按钮(
值:选中,
项目:dateDrop,
提示:文本(“选择日期”),
一旦更改:(值){
所选=值;
setState((){});
}),
]));
退货日期;
}
_停机时间(){
var drop_time=容器(
子级:行(mainAxisAlignment:mainAxisAlignment.start,子级:
[
下拉按钮(
值:选中,
项目:时差,
提示:文本(“选择时间”),
一旦更改:(值){
所选=值;
setState((){});
}),
]));
返回下降时间;
}
}
颤振运行时消息:

 Syncing files to device iPhone X...
flutter: ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
flutter: The following ArgumentError was thrown during paint():
flutter: Invalid argument(s): 0.0
flutter:
flutter: When the exception was thrown, this was the stack:
flutter: #0      double.clamp (dart:core/runtime/libdouble.dart:144:7)
flutter: #1      _DropdownMenuPainter.paint (package:flutter/src/material/dropdown.dart:57:33)
flutter: #2      RenderCustomPaint._paintWithPainter (package:flutter/src/rendering/custom_paint.dart:520:13)
flutter: #3      RenderCustomPaint.paint (package:flutter/src/rendering/custom_paint.dart:558:7)
flutter: #4      RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2085:7)
flutter: #5      PaintingContext.paintChild (package:flutter/src/rendering/object.dart:171:13)
flutter: #6      _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:126:15)
flutter: #7      PaintingContext.pushLayer (package:flutter/src/rendering/object.dart:367:12)
flutter: #8      PaintingContext.pushOpacity (package:flutter/src/rendering/object.dart:491:5)
flutter: #9      RenderAnimatedOpacity.paint (package:flutter/src/rendering/proxy_box.dart:904:15)
flutter: #10     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2085:7)
flutter: #11     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:171:13)
flutter: #12     RenderShiftedBox.paint (package:flutter/src/rendering/shifted_box.dart:70:15)
flutter: #13     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2085:7)
flutter: #14     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:171:13)
flutter: #15     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:126:15)
flutter: #16     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2085:7)
flutter: #17     PaintingContext._repaintCompositedChild (package:flutter/src/rendering/object.dart:128:11)
flutter: #18     PaintingContext.repaintCompositedChild (package:flutter/src/rendering/object.dart:96:5)
flutter: #19     PipelineOwner.flushPaint (package:flutter/src/rendering/object.dart:852:29)
flutter: #20     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:272:19)
flutter: #21     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:654:13)
flutter: #22     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:208:5)
flutter: #23     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:990:15)
flutter: #24     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:930:9)
flutter: #25     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:842:5)
flutter: #26     _invoke (dart:ui/hooks.dart:128:13)
flutter: #27     _drawFrame (dart:ui/hooks.dart:117:3)
flutter:
flutter: The following RenderObject was being processed when the exception was fired:
flutter:   RenderCustomPaint#556fb relayoutBoundary=up2
flutter:   creator: CustomPaint ← FadeTransition ← _DropdownMenu<Object> ← CustomSingleChildLayout ← Builder
flutter:   ← MediaQuery ← Builder ← RepaintBoundary-[GlobalKey#4c3ae] ← IgnorePointer ← AnimatedBuilder ←
flutter:   RepaintBoundary ← _FocusScopeMarker ← ⋯
flutter:   parentData: <none> (can use size)
flutter:   constraints: BoxConstraints(w=148.0, 0.0<=h<=716.0)
flutter:   size: Size(148.0, 16.0)
flutter: This RenderObject had the following descendants (showing up to depth 5):
flutter:   RenderSemanticsAnnotations#151e5 relayoutBoundary=up3 NEEDS-PAINT
flutter:     RenderCustomPaint#b9211 relayoutBoundary=up4 NEEDS-PAINT
flutter:       _RenderInkFeatures#13585 relayoutBoundary=up5 NEEDS-PAINT
flutter:         RenderRepaintBoundary#ed5d6 relayoutBoundary=up6 NEEDS-PAINT
flutter:           RenderCustomPaint#f5290 relayoutBoundary=up7 NEEDS-PAINT
flutter: ════════════════════════════════════════════════════════════════════════════════════════════════════
flutter: Another exception was thrown: Invalid argument(s): 0.0
flutter: Another exception was thrown: Invalid argument(s): 0.0
flutter: Another exception was thrown: Invalid argument(s): 0.0
flutter: Another exception was thrown: Invalid argument(s): 0.0
flutter: Another exception was thrown: Invalid argument(s): 0.0
flutter: Another exception was thrown: Invalid argument(s): 0.0
    [C2.1 748F7D32-4C53-4798-B15B-8E3BDB7D9006 2601:196:4801:b518:c076:dbf1:83d3:ada3.50444<->2607:f8b0:4002:c08::8b.443]
    Connected Path: satisfied (Path is satisfied), interface: en0
    Duration: 121.165s, DNS @0.004s took 0.008s, TCP @0.018s took 0.055s, TLS took 0.137s
    bytes in/out: 3879/764, packets in/out: 10/8, rtt: 0.056s, retransmitted packets: 0, out-of-order packets: 0
    [C3.1 67E05789-ED99-4A78-A900-D136E04B908C 2601:196:4801:b518:c076:dbf1:83d3:ada3.50445<->2607:f8b0:4002:c08::8b.443]
    Connected Path: satisfied (Path is satisfied), interface: en0
    Duration: 120.368s, DNS @0.002s took 0.004s, TCP @0.008s took 0.056s, TLS took 0.137s
    bytes in/out: 3591/1188, packets in/out: 9/9, rtt: 0.058s, retransmitted packets: 0, out-of-order packets: 0
    [C1.1 89EEE9E8-79C7-4861-9FD9-148DA484E6BE 2601:196:4801:b518:c076:dbf1:83d3:ada3.50428<->2607:f8b0:4002:813::200a.443]
    Connected Path: satisfied (Path is satisfied), interface: en0
    Duration: 240.659s, DNS @0.002s took 0.031s, TCP @0.036s took 0.058s, TLS took 0.563s
    bytes in/out: 3394/1027, packets in/out: 10/9, rtt: 0.057s, retransmitted packets: 0, out-of-order packets: 0
正在将文件同步到设备iPhone X。。。
颤振:══╡ 呈现库捕获到异常╞═════════════════════════════════════════════════════════
颤振:在绘制过程中引发了以下ArgumentError():
颤振:无效参数:0.0
颤振:
颤振:抛出异常时,这是堆栈:
颤振:#0 double.clamp(dart:core/runtime/libdouble.dart:144:7)
颤振:#1#下拉菜单uppaint.paint(包装:颤振/src/材料/下拉。省道:57:33)
颤振:#2 RenderConstompaint._paintWithPainter(包装:颤振/src/rendering/custom_paint.省道:520:13)
flatter:#3 rendercastompaint.paint(包:flatter/src/rendering/custom_-paint.dart:558:7)
flatter:#4 RenderObject._paintWithContext(包:flatter/src/rendering/object.dart:2085:7)
flatter:#5 PaintingContext.paintChild(包:flatter/src/rendering/object.dart:171:13)
颤振:#6#RenderProxy box&RenderBox&RenderObjectWithChildMixin&RenderProxy box Mixin.paint(包:颤振/src/rendering/proxy#box.省道:126:15)
flatter:#7 PaintingContext.pushLayer(包:flatter/src/rendering/object.dart:367:12)
flatter:#8 PaintingContext.pushOpacity(包:flatter/src/rendering/object.dart:491:5)
颤振:9 RenderAnimatedOpacity.paint(包:颤振/src/rendering/proxy_-box.dart:904:15)
flatter:#10 RenderObject._paintWithContext(包:flatter/src/rendering/object.dart:2085:7)
弗鲁特
 Syncing files to device iPhone X...
flutter: ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
flutter: The following ArgumentError was thrown during paint():
flutter: Invalid argument(s): 0.0
flutter:
flutter: When the exception was thrown, this was the stack:
flutter: #0      double.clamp (dart:core/runtime/libdouble.dart:144:7)
flutter: #1      _DropdownMenuPainter.paint (package:flutter/src/material/dropdown.dart:57:33)
flutter: #2      RenderCustomPaint._paintWithPainter (package:flutter/src/rendering/custom_paint.dart:520:13)
flutter: #3      RenderCustomPaint.paint (package:flutter/src/rendering/custom_paint.dart:558:7)
flutter: #4      RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2085:7)
flutter: #5      PaintingContext.paintChild (package:flutter/src/rendering/object.dart:171:13)
flutter: #6      _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:126:15)
flutter: #7      PaintingContext.pushLayer (package:flutter/src/rendering/object.dart:367:12)
flutter: #8      PaintingContext.pushOpacity (package:flutter/src/rendering/object.dart:491:5)
flutter: #9      RenderAnimatedOpacity.paint (package:flutter/src/rendering/proxy_box.dart:904:15)
flutter: #10     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2085:7)
flutter: #11     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:171:13)
flutter: #12     RenderShiftedBox.paint (package:flutter/src/rendering/shifted_box.dart:70:15)
flutter: #13     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2085:7)
flutter: #14     PaintingContext.paintChild (package:flutter/src/rendering/object.dart:171:13)
flutter: #15     _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.paint (package:flutter/src/rendering/proxy_box.dart:126:15)
flutter: #16     RenderObject._paintWithContext (package:flutter/src/rendering/object.dart:2085:7)
flutter: #17     PaintingContext._repaintCompositedChild (package:flutter/src/rendering/object.dart:128:11)
flutter: #18     PaintingContext.repaintCompositedChild (package:flutter/src/rendering/object.dart:96:5)
flutter: #19     PipelineOwner.flushPaint (package:flutter/src/rendering/object.dart:852:29)
flutter: #20     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:272:19)
flutter: #21     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:654:13)
flutter: #22     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:208:5)
flutter: #23     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:990:15)
flutter: #24     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:930:9)
flutter: #25     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:842:5)
flutter: #26     _invoke (dart:ui/hooks.dart:128:13)
flutter: #27     _drawFrame (dart:ui/hooks.dart:117:3)
flutter:
flutter: The following RenderObject was being processed when the exception was fired:
flutter:   RenderCustomPaint#556fb relayoutBoundary=up2
flutter:   creator: CustomPaint ← FadeTransition ← _DropdownMenu<Object> ← CustomSingleChildLayout ← Builder
flutter:   ← MediaQuery ← Builder ← RepaintBoundary-[GlobalKey#4c3ae] ← IgnorePointer ← AnimatedBuilder ←
flutter:   RepaintBoundary ← _FocusScopeMarker ← ⋯
flutter:   parentData: <none> (can use size)
flutter:   constraints: BoxConstraints(w=148.0, 0.0<=h<=716.0)
flutter:   size: Size(148.0, 16.0)
flutter: This RenderObject had the following descendants (showing up to depth 5):
flutter:   RenderSemanticsAnnotations#151e5 relayoutBoundary=up3 NEEDS-PAINT
flutter:     RenderCustomPaint#b9211 relayoutBoundary=up4 NEEDS-PAINT
flutter:       _RenderInkFeatures#13585 relayoutBoundary=up5 NEEDS-PAINT
flutter:         RenderRepaintBoundary#ed5d6 relayoutBoundary=up6 NEEDS-PAINT
flutter:           RenderCustomPaint#f5290 relayoutBoundary=up7 NEEDS-PAINT
flutter: ════════════════════════════════════════════════════════════════════════════════════════════════════
flutter: Another exception was thrown: Invalid argument(s): 0.0
flutter: Another exception was thrown: Invalid argument(s): 0.0
flutter: Another exception was thrown: Invalid argument(s): 0.0
flutter: Another exception was thrown: Invalid argument(s): 0.0
flutter: Another exception was thrown: Invalid argument(s): 0.0
flutter: Another exception was thrown: Invalid argument(s): 0.0
    [C2.1 748F7D32-4C53-4798-B15B-8E3BDB7D9006 2601:196:4801:b518:c076:dbf1:83d3:ada3.50444<->2607:f8b0:4002:c08::8b.443]
    Connected Path: satisfied (Path is satisfied), interface: en0
    Duration: 121.165s, DNS @0.004s took 0.008s, TCP @0.018s took 0.055s, TLS took 0.137s
    bytes in/out: 3879/764, packets in/out: 10/8, rtt: 0.056s, retransmitted packets: 0, out-of-order packets: 0
    [C3.1 67E05789-ED99-4A78-A900-D136E04B908C 2601:196:4801:b518:c076:dbf1:83d3:ada3.50445<->2607:f8b0:4002:c08::8b.443]
    Connected Path: satisfied (Path is satisfied), interface: en0
    Duration: 120.368s, DNS @0.002s took 0.004s, TCP @0.008s took 0.056s, TLS took 0.137s
    bytes in/out: 3591/1188, packets in/out: 9/9, rtt: 0.058s, retransmitted packets: 0, out-of-order packets: 0
    [C1.1 89EEE9E8-79C7-4861-9FD9-148DA484E6BE 2601:196:4801:b518:c076:dbf1:83d3:ada3.50428<->2607:f8b0:4002:813::200a.443]
    Connected Path: satisfied (Path is satisfied), interface: en0
    Duration: 240.659s, DNS @0.002s took 0.031s, TCP @0.036s took 0.058s, TLS took 0.563s
    bytes in/out: 3394/1027, packets in/out: 10/9, rtt: 0.057s, retransmitted packets: 0, out-of-order packets: 0
import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: 'Flutter Demo',
      theme: new ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: new RemindersPage(),
    );
  }
}

class RemindersPage extends StatefulWidget {
  @override
  _RemindersPageState createState() => _RemindersPageState();
}

class _RemindersPageState extends State<RemindersPage> {
  final TextEditingController _titleController = new TextEditingController();

  DateTime _date = new DateTime.now();

  onDateChanged(DateTime date) {
    _date = date;
    //setState(() {}); //optional
  }

  // Alert Dialog
  void _showFormDialog() {
    var alert = new AlertDialog(
      title: Text("Set Reminder"),
      content: Column(
        mainAxisSize: MainAxisSize.min,
        children: <Widget>[
          TextField(
            controller: _titleController,
            autofocus: true,
            decoration: InputDecoration(
              labelText: 'Name of Reminder',
              hintText: "eg. Test on Thursday!",
              icon: Icon(Icons.title),
            ),
          ),
          // Date
          SelectDateButton(
            date: _date,
            dateCallback: onDateChanged,
          ),
        ],
      ),
      actions: <Widget>[
        new FlatButton(
            onPressed: () => debugPrint("Save button"), child: Text('Save')),
        new FlatButton(
            onPressed: () => Navigator.pop(context), child: Text('Cancel'))
      ],
    );
    showDialog(
        context: context,
        builder: (_) {
          return alert;
        });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.black87,
      body: Column(children: <Widget>[]),

      // Floating Action button
      floatingActionButton: new FloatingActionButton(
        tooltip: "Add Item",
        backgroundColor: Colors.greenAccent,
        child: new ListTile(title: Icon(Icons.add)),
        onPressed: _showFormDialog,
      ),
    );
  }
}

class SelectDateButton extends StatefulWidget {
  final DateTime date;

  final ValueChanged<DateTime> dateCallback;

  SelectDateButton({Key key, this.date, this.dateCallback}) : super(key: key);

  @override
  SelectDateButtonState createState() {
    return new SelectDateButtonState();
  }
}

class SelectDateButtonState extends State<SelectDateButton> {
  DateTime _date;

  @override
  void initState() {
    super.initState();
    _date = widget.date;
  }

  void selectDate(BuildContext context) async {
    final DateTime picked = await showDatePicker(
      context: context,
      initialDate: _date,
      firstDate: new DateTime(2018),
      lastDate: new DateTime(2019),
    );
    if (picked != null) {
      widget.dateCallback(picked);
      _date = picked;
      setState(() {});
    }
  }

  @override
  Widget build(BuildContext context) {
    return FlatButton(
      onPressed: () => selectDate(context),
      child: Row(
        mainAxisSize: MainAxisSize.min,
        children: <Widget>[
          Text("${_date.toString().substring(0, 10)}"),
          Icon(Icons.arrow_drop_down),
        ],
      ),
    );
  }
}
Future _showDialog(context) async {
 return await showDialog<void>(
   context: context,
   builder: (BuildContext context) {
     return AlertDialog(
       content: StatefulBuilder(
         builder: (BuildContext context, StateSetter setState) {
           return Column(
             mainAxisSize: MainAxisSize.min,
             children: <Widget>[
               //your code dropdown button here
             ]),
           );
         },
       ),
     );
   },
 );
}