首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用日期选择器在底部溢出时纠正此问题

如何使用日期选择器在底部溢出时纠正此问题
EN

Stack Overflow用户
提问于 2018-08-20 23:28:58
回答 2查看 3K关注 0票数 2

我有一个功能,使我能够显示日期选择器与按钮press.when我按下按钮,我得到这个底部溢出

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-21 07:03:11

我用这篇文章解决了这个问题:https://github.com/flutter/flutter/issues/19744

我基本上从其中删除了OKCANCEL按钮,并添加到when select date自动按下日期选择器上的一个DATE

在您的datapicker.dart中:

代码语言:javascript
复制
void _handleYearChanged(DateTime value) {
    _vibrate();
    setState(() {
      _mode = DatePickerMode.day;
      _selectedDate = value;
      Navigator.pop(context, _selectedDate); //new
    });
  }

  void _handleDayChanged(DateTime value) {
    _vibrate();
    setState(() {
      _selectedDate = value;
      Navigator.pop(context, _selectedDate); //new
    });
  }

我在995和1017行做了注释,您可以在其中插入action

代码语言:javascript
复制
  switch (orientation) {
            case Orientation.portrait:
              return new SizedBox(
                width: _kMonthPickerPortraitWidth,
                child: new Column(
                  mainAxisSize: MainAxisSize.min,
                  crossAxisAlignment: CrossAxisAlignment.stretch,
                  children: <Widget>[
                    header,
                    new Container(
                     color: theme.dialogBackgroundColor,
                     child: new Column(
                       mainAxisSize: MainAxisSize.min,
                       crossAxisAlignment: CrossAxisAlignment.stretch,
                       children: <Widget>[
                         picker,
                         //actions,
                       ],
                     ),
                    ),
                  ],
                ),
              );
            case Orientation.landscape:
              return new SizedBox(
                height: _kDatePickerLandscapeHeight,
                child: new Row(
                  mainAxisSize: MainAxisSize.min,
                  crossAxisAlignment: CrossAxisAlignment.stretch,
                  children: <Widget>[
                    header,
                    new Flexible(
                      child: new Container(
                        width: _kMonthPickerLandscapeWidth,
                        color: theme.dialogBackgroundColor,
                        child: new Column(
                          mainAxisSize: MainAxisSize.min,
                          crossAxisAlignment: CrossAxisAlignment.stretch,
                          children: <Widget>[picker] //, actions],
                        ),
                      ),
                    ),
                  ],
                ),
              );
          }

在我看来,我们不需要CANCEL按钮和OK按钮。

票数 2
EN

Stack Overflow用户

发布于 2019-05-18 07:09:33

我也遇到了这个问题,但我找到了一个解决方案。只需使用FittedBox包装即可。

代码语言:javascript
复制
Future<Null> selecionarData() async {
//dataSelecionada is a final DateTime
dataSelecionada = await showDatePicker(
    context: context,
    initialDate: dataAtual,
    firstDate: DateTime(2019),
    lastDate: DateTime(2022),
    builder: (BuildContext context, Widget child) {
      return FittedBox(
        child: Theme(
          child: child,
          data: ThemeData(
            primaryColor: Colors.purple[300],
          ),
        ),
      );
    });

}

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51934042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档