# #firebase #flutter #google-cloud-firestore
Вопрос:
Когда существует определенный документ, я хочу перейти на другую страницу, а затем, когда документ не существует. Приведенный ниже код работает хорошо, когда у пользователя приложения есть соединение. Однако при потере соединения с Интернетом функция всегда будет возвращать сообщение о том, что она не смогла найти запрос. Что я хочу сделать, так это позволить функции выдавать ошибку, когда она не может подключиться к firestore, чтобы я мог остаться на той же странице и повторить попытку.
Заранее благодарю вас!
Future<bool> checkIfDocExists({String? id}) async {
var snapshot = await FirebaseFirestore.instance
.collection('rentals')
.where('DeviceID', isEqualTo: id)
.where('Status', isEqualTo: 0)
.get();
return (snapshot.docs.isNotEmpty);
}
Ответ №1:
В этом случае вам следует проверить подключение устройства к Интернету. Существует пакет, который поможет вам проверить состояние Интернета.
connectivity_plus
=> https://pub.dev/packages/connectivity_plus
connectivity
=> https://pub.dev/packages/connectivity
Пример кода :
ConnectivityResult? _connectivityResu<
Future<void> _checkConnectivityState() async {
final ConnectivityResult result = await Connectivity().checkConnectivity();
if (result == ConnectivityResult.wifi) {
print('Connected to a Wi-Fi network');
} else if (result == ConnectivityResult.mobile) {
print('Connected to a mobile network');
} else {
print('Not connected to any network');
}
setState(() {
_connectivityResult = resu<
});
}
Вы можете проверить подключение к Интернету, прежде чем читать документ firestore
.
Ответ №2:
Если вы хотите убедиться, что документ считывается с сервера, вы можете указать для этого параметр источника:
...
.get(GetOptions(source: Source.server));
При использовании этой опции вызов завершится неудачно, если он не сможет прочитать документ с сервера.
Также смотрите Справочную документацию FlutterFire для Source
.