Согласно документации, snapshot.hasData
Возвращает, содержит ли этот снимок ненулевое значение данных.
Это может быть ложно, даже если асинхронное вычисление завершилось успешно, если вычисление не вернуло ненулевое значение. Например, Future завершится с нулевым значением, даже если оно завершится успешно.
Таким образом, snapshot.hasData
вернет false при получении нулевого значения, подтверждая ваши мысли в вашем вопросе.
snapshot.hasError
Возвращает, содержит ли этот снимок ненулевое значение ошибки.
Это всегда верно, если последний результат асинхронного вычисления был неудачным .
Ненулевое значение ошибки получается, когда сервер отвечает с состоянием, которое указывает на сбой, такой как 404, 500 с объектом ошибки , сопровождающим моментальный снимок или что-то еще возвращенное из операции
snapshot.hasError
будет ложным при неудавшемся запросе или в случае, когда запрос даже не был выполнен (в случае отсутствия сети или плохой сети), и ответ имеет ненулевое значение (будет объект ошибки , прикрепленный к моментальному снимку при ConnectionState.DONE
, являющемся истинным; snapshot.hasData
равно null
(включая случаи, когда ожидаемый результат операции имеет тип void
)
Ответ на ваш вопрос зависит от того, был ли прикреплен к объект ошибки ответ от сервера или нет, когда запрос является ошибочным из-за чего-то, что произошло на стороне сервера. Всегда будет объект ошибки, присоединенный к ответу, если запрос не выполнен, потому что он никогда не был сделан из-за плохой сети.
Если объект ошибки имеет значение null, то LoadingIndicator будет отображаться неопределенно