Как удалить кнопки ОК и отменить в DateTimeField Flutter - PullRequest
0 голосов
/ 20 июня 2020

введите описание изображения здесь

Можно ли удалить две кнопки, встроенные в средство выбора?

Можно ли избежать нажатия кнопки «ОК» для отметки даты в Поле?

1 Ответ

0 голосов
/ 20 июня 2020

Чтобы обсудить вашу проблему, мы можем разделить ее на эти две части

1. Можно ли скрыть кнопки «Отмена» и «ОК»

Да, мы можем

Окончательный код

Future<void> _selectDate(BuildContext context) async {
    final DateTime chosenDate = await showDatePicker(
      context: context,
      initialDate: DateTime(2020, 6, 21),
      firstDate: DateTime(2020, 5, 1),
      lastDate: DateTime(2020, 7, 1),
      confirmText: "", // to Hide it, we use this
      cancelText: "", // to Hide it, we use this
    );
    print("chosenDate");
    print(chosenDate);
}

2. Можем ли мы отметить дату без кнопки ОК?

Нет, не можем. В приведенном выше примере я распечатал возвращаемое значение selectedDate.

Return Value of Chosen Date

Flutter Material Widget

Because, basically, Flutter needs to execute _handleOk method, to destroy DatePicker window, and return Value through await.

// flutter/packages/flutter/lib/src/material/pickers/date_picker_dialog.dart
// Line 301
void _handleOk() {
    if (_entryMode == DatePickerEntryMode.input) {
      final FormState form = _formKey.currentState;
      if (!form.validate()) {
        setState(() => _autoValidate = true);
        return;
      }
      form.save();
    }
    Navigator.pop(context, _selectedDate);
  }
...