Использование автономного сохранения в Firestore в приложении Flutter - PullRequest
0 голосов
/ 30 ноября 2018

Я разрабатываю приложение, которое использует Firebase's Firestore для отправки данных в Интернет.Одной из функций приложения является возможность сохранять данные на устройстве в автономном режиме и отправлять их в Firestore после восстановления интернет-соединения.Я активировал автономное сохранение, но оно не работает.

КОНСОЛЬ ОТЛАДКИ:

W/OkHttpClientTransport(28536): Failed closing connection
W/OkHttpClientTransport(28536): javax.net.ssl.SSLException: Write error: ssl=0x7f7acfc408: I/O error during system call, Broken pipe
W/OkHttpClientTransport(28536):     at com.google.android.gms.org.conscrypt.NativeCrypto.SSL_write(Native Method)
W/OkHttpClientTransport(28536):     at com.google.android.gms.org.conscrypt.NativeSsl.write(:com.google.android.gms@14798020@14.7.98 (040406-222931072):4)

Как активировать автономное сохранение и синхронизацию с Firestore при восстановлении Интернета?

МОЙ КОД:

Future<Null> sendFirebaseData(var selectedModel) async {

    Firestore.instance.enablePersistence(true);
    var certID = await getIDCertificado();

    var dateTime = new DateTime.now();
    var nowHour = new DateFormat('kk:mm:ss').format(dateTime);

      Map<String, dynamic> dataHeader = {
        'ID':                certID,
        };

      Map<String, dynamic> finalDataMap = {}..addAll(dataGeneral)
                                          ..addAll(dataInstrumento)..addAll(dataPadrao)
                                          ..addAll(dataAdicional)..addAll(dataHeader);

      await Firestore.instance.collection('certificados').document((certID.toString()))
          .setData(finalDataMap);}

1 Ответ

0 голосов
/ 30 ноября 2018

когда вы используете автономное сохранение в Firestore, не используйте транзакции или await для ответа.

, поэтому измените это:

  await Firestore.instance.collection('certificados').document((certID.toString()))
      .setData(finalDataMap);

на следующее:

 Firestore.instance.collection('certificados').document((certID.toString()))
      .setData(finalDataMap);

Когда вы восстанавливаете подключение к Интернету, ваши данные будут синхронизироваться автоматически, даже если вы находитесь в фоновом режиме.

Не работает, когда ваше приложение закрыто.

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