Flatter rxDart BehaviorSubject теряет сообщение об ошибке - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть TextField в StreamBuilder, который слушает поток BehaviorSubject. Когда снимок содержит ошибку, errorText отображает ее.

Проблема в том, что TextField прокручивается из видимой области и прокручивается обратно в StreamBuilder перестроениях, но текст ошибки отсутствует, потому что на этот раз snapshot.hasError имеет значение false.

Как сохранить ошибку?

1 Ответ

1 голос
/ 11 апреля 2019

Возможно, вы захотите сохранить ошибку в переменной String из вас StatefulWidget.
Как только вы будете готовы очистить ошибку (например, пользователь нажимает кнопку очистки), вы просто устанавливаете эту переменнуюк нулю.

String errorMsg;

StreamBuilder(
  stream: myStream,
  builder: (BuildContext context, snapshot) {

    if (snapshot.hasError) {
      errorMsg = snapshot.error.toString();
    }

    if (errorMsg != null) {
      return Text(errorMsg);
    }

    return new Text(
      snapshot.data.toString(),
    );
  },
)
...