Облачный камин Flutter не может установить данные в документе - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь создать приложение для флаттера, в котором я собираю данные о студентах и ​​сохраняю их в пожарном депо.Я хочу добавить документы, касающиеся пользователей, в коллекцию именованных пользователей и внутри документов, имеющих собственный идентификатор, скажем, uid.

Проблема, с которой я сталкиваюсь, заключается в том, что я не могу установить данные для такого документа, где ни один конкретныйдокумент, ни коллекция не существует.Теперь это на самом деле не является причиной проблемы, поскольку она работает при использовании библиотеки JavaScript для облачного пожарного хранилища.

Мои зависимости:

dependencies:
  flutter:
    sdk: flutter
  google_sign_in: ^4.0.1+1
  scoped_model: ^1.0.1
  http: ^0.12.0+1
  shared_preferences: ^0.4.2
  rxdart: ^0.20.0
  file_picker: ^1.2.0
  flutter_pdf_viewer: ^0.2.0
  firebase_auth: ^0.8.1+4
  firebase_core: ^0.3.1+1
  firebase_messaging: ^4.0.0+1
  firebase_storage: ^2.1.0+1
  cloud_firestore: ^0.9.5+2

Код на данный момент:

Future<bool> storeStudentData(Map<String, Object> data) async {
  String uid = authenticatedUser.id;

  DocumentReference docRef = db.collection('users').document(uid);

  try {
    await docRef.setData(data);
    print('Done setting data');
    return true;
  } catch (err) {
    print('EERRRR setting data');
    return false;
  }
}

Мои правила пожарной охраны:

service cloud.firestore {
  match /databases/{database}/documents {
  match /{document=**} {
    allow read, write: if request.auth != null;
    }
  }
}

Ошибка, с которой я сталкиваюсь

[ERROR:flutter/shell/platform/android/platform_view_android_jni.cc(40)] 
java.lang.NoSuchMethodError: No virtual method 
set(Ljava/util/Map;)Lcom/google/android/gms/tasks/Task; in class 
Lcom/google/firebase/firestore/DocumentReference; or its super classes 
(declaration of 'com.google.firebase.firestore.DocumentReference' appears in 
/data/app/com.example.rla_official-1/base.apk:classes2.dex)
E/flutter (24452):      at 
io.flutter.plugins.firebase.cloudfirestore.
CloudFirestorePlugin.onMethodCall(CloudFirestorePlugin.java:523)
E/flutter (24452):      at 
io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler
.onMessage(MethodChannel.java:201)
E/flutter (24452):      at 
io.flutter.view.FlutterNativeView$PlatformMessageHandlerImpl
.handleMessageFromDart(FlutterNativeView.java:188)
E/flutter (24452):      at io.flutter.embedding.engine.FlutterJNI.
handlePlatformMessage(FlutterJNI.java:202)
E/flutter (24452):      at android.os.MessageQueue.nativePollOnce(Native 
Method)
E/flutter (24452):      at 
android.os.MessageQueue.next(MessageQueue.java:328)
E/flutter (24452):      at android.os.Looper.loop(Looper.java:148)
E/flutter (24452):      at 
android.app.ActivityThread.main(ActivityThread.java:6339)
E/flutter (24452):      at java.lang.reflect.Method.invoke(Native Method)
E/flutter (24452):      at 
com.android.internal.os.
ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1084)
E/flutter (24452):      at 
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:945)
E/flutter (24452):
F/flutter (24452): 
[FATAL:flutter/shell/platform/android/platform_view_android_jni.cc(77)] 
Check failed: CheckException(env).
F/libc    (24452): Fatal signal 6 (SIGABRT), code -6 in tid 24452 
(le.rla_official)
Lost connection to device.

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

Я опробовал ее в каком-то другом проекте Android (Java), и он работает.

IВам понадобится возможность иметь собственные идентификаторы для документов для более эффективного поиска позже.

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