введите описание изображения здесь У меня есть функция, которая позволяет мне показывать дату выбора с помощью нажатия кнопки. Когда я нажимаю кнопку, я получаю это нижнее переполнение

2
Norbert 20 Авг 2018 в 18:28

3 ответа

Лучший ответ

Я решил эту проблему с этим постом: https://github.com/flutter/flutter/issues/19744

Я в основном убрал из этого нижнюю часть OK и CANCEL и добавил, чтобы при выборе даты автоматически нажимать на DATE на указателе даты.

В вашем datepicker.dart:

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

  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],
                        ),
                      ),
                    ),
                  ],
                ),
              );
          }

На мой взгляд, нам не нужны кнопка ОТМЕНА и кнопка ОК.

2
Rafael Nonino 20 Авг 2018 в 23:03

Я тоже получил эту проблему, но нашел решение. Просто заверните с FittedBox.

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],
          ),
        ),
      );
    });

}

0
raquelms203 17 Май 2019 в 23:09
51934042