Flutter: невозможно обновить состояние переменной - PullRequest
0 голосов
/ 28 сентября 2019

В моем приложении есть раздел для добавления оплаты.Чтобы добавить платеж, администратор:

  1. выберет пользователя
  2. введите сумму
  3. выберите от даты
  4. выберите до даты

И сохраните ее.

Цель: Я хочу обновить с даты динамически, на основев предыдущий день.

Пример Case:

  1. мы добавили первый платеж пользователя, с 1st June 2019 до 1st September 2019
  2. , когда мы пытаемсяпроизвести второй платеж, когда клиент выбран;Я хочу получить последний платеж на дату как с даты , заполняемый автоматически.( до даты от дБ до от даты в форме)

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

Что я сделал:

Я почти все сделал, но возникла проблема с обновлением значения поля.

Я сделал следующие шаги:

  1. создал функцию, которая выполняется, когда пользователь выбран
  2. Функция запрашивает дБ и извлекает последний платежdetail
  3. и возвращает на дату значение поля предыдущего платежа
  4. значение поля from date устанавливается внутри той же функции, как эта:

     setState(() {
       _fromDate = DateTime.parse(toDate);
     });
    

Проблема:

Печать _fromDate внутри setState Функция выводит правильное значение, но это null снаружи.

Скажите, пожалуйста, как мне правильно обновить значение и избавиться от этой проблемы?

Обновление: Ниже указан код Widget: (stateустанавливается, как указано выше, после получения данных из базы данных)

DateTimeField(
    onSaved: (val) => setState(() => _fromDate = val),
    keyboardType: TextInputType.datetime,
    onChanged: (DateTime newValue) {
      setState(() {
        _fromDate = newValue;
      });
    },
    onShowPicker: (context, currentValue) {
      return showDatePicker(
          context: context,
          firstDate: DateTime.now(),
          initialDate: currentValue ?? DateTime.now(),
          );
    },
  );

1 Ответ

0 голосов
/ 28 сентября 2019

Будет полезно иметь немного больше кода для получения контекста, может быть много вещей, вы используете State Management?Провайдеры, Redux, Bloc ... что может быть, это то, что ищет заполненное поле?или может быть опечатка ... пожалуйста, поделитесь больше кода, пожалуйста.

...