проверка, установил ли querysnapshot соединение с firestore

# #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 .