Flutter - Time.now () в TextFormField - PullRequest
1 голос
/ 16 мая 2019

Я добавляю один раз в Flutter. Вот так ...

Future<Null> dataloggerHour(
      BuildContext context, TextEditingController controller) async {
    final TimeOfDay picked =
        await showTimePicker(context: context, initialTime: time);
    if (picked != null && picked != TimeOfDay.now()) {
      picked.format(context);
      setState(() {
        var transform = picked.format(context).split(" ");
        controller.text = transform[0];
      });
    }
  }

Мне нужно добавить эту дату в поле ввода. Проблема в том, что когда я конвертирую эту дату в строку, удалите нули слева.

Пример данных: 08:00, когда анализ возвращает 80: 0.

Как мне сохранить эти нули?

Ответы [ 3 ]

0 голосов
/ 16 мая 2019

Если вы хотите сохранить начальные нули, вы можете использовать padLeft:

String time = '8:00';
time = time.padLeft(5, '0'); // 08:00

Приведенный выше пример добавляет начальные нули, если длина строки меньше 5.

0 голосов
/ 16 мая 2019

Это должно работать

 DateTimePickerFormField(
                      lastDate: DateTime.now(),
                      inputType: inputType,
                      format: formats[inputType],
                      editable: editable,
                      decoration: InputDecoration(
                        errorText: _validate ? 'Cannot be left blank':null,
                          labelText: 'Date/Time',
                          hasFloatingPlaceholder: false,
                          filled: true,
                          fillColor: Colors.grey[300]),
                      onFieldSubmitted: (value) {
                        setState(() {
                          _//...........some code
                        });
                      },
                    ),
0 голосов
/ 16 мая 2019

В официальной документации они переопределяют метод toString для автоматического добавления 0. Вам нужно использовать метод .toString ().

@override
String toString() {
  String _addLeadingZeroIfNeeded(int value) {
    if (value < 10)
      return '0$value';
    return value.toString();
  }

  final String hourLabel = _addLeadingZeroIfNeeded(hour);
  final String minuteLabel = _addLeadingZeroIfNeeded(minute);

  return '$TimeOfDay($hourLabel:$minuteLabel)';
}

...