DropdownButtonFormField не восстанавливается - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь обновить выбранное значение программно.

Я использовал различные методы, включая Consumer et c., И убедился, что значение обновляется и виджет вызывается при однако значение меняется, однако DropdownButtonFormField никогда не перестраивался с последним значением.

В настоящее время я обертываю DropdownButtonFormField в StreamBuilder, который, предположительно, должен получить перестроение всякий раз, когда есть новое событие, отправленное через поток. Это мой код:

Декларация

final StreamController<String> _raceStreamController = new StreamController<String>();

DropdownButtonFormField

return  
    StreamBuilder<String>(
      stream: _raceStreamController.stream,
      builder: (BuildContext context, AsyncSnapshot<String> snapshot) {

        return new DropdownButtonFormField<String>(
          value: snapshot.data,
          hint: new Text(hint,
            textAlign: TextAlign.center),
          isExpanded: true,
          items: items.map((String value) {
            return new DropdownMenuItem<String>(
              child: new Text(value),
              value: value
            );
          }).toList(),
          validator: (value) => value == null ? 'field required' : null,
          onChanged: (value) {} // no use for now,
      );
  });

Pu sh data

onFocusChange: (focus) async {
  if (!focus) {
    try{
      await userBloc.searchUser(controller.text.toUpperCase());
      _raceStreamController.sink.add(userBloc.user.race);
    } catch(e) {
      if (e.toString() == ERROR_UNAUTHORISED)
        navigateToRoot(context);
    }
  }
}

Я пытался удалить как можно больше избыточного кода.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...