Срыв приложения Flutter / Dart из-за изменений в объекте Firebase Date - PullRequest
0 голосов
/ 01 июня 2018

Мой код:

void createCloudStoreRecord(FirebaseUser user) {
  // Create/Update user record with uid

  final DocumentReference docRefUsers = Firestore.instance.collection("users").document(user.uid);

  docRefUsers.get().then((datasnapshot) {
    if (datasnapshot.exists) {
      // Exists, so do nothing
    } else {
      // Does not exist, let's create
      Map<String, String> data = <String, String> {
        "email": user.email,
        "photoURL": user.photoUrl,
      };
      // Save data
      docRefUsers.setData(data).whenComplete(() {

      }).catchError((e) => print(e));       
    }
});

Ошибка:

5.0.0 - [Firebase/Firestore][I-FST000001] 
The behavior for system Date objects stored in Firestore is going to change AND YOUR APP MAY BREAK.
To hide this warning and ensure your app does not break, you need to add the following code to your app before calling any other Cloud Firestore methods:
    let db = Firestore.firestore()
    let settings = db.settings
settings.areTimestampsInSnapshotsEnabled = true
db.settings = settings
With this change, timestamps stored in Cloud Firestore will be read back as Firebase Timestamp objects instead of as system Date objects. So you will also need to update code expecting a Date to instead expect a Timestamp. or example:
// old:
let date: Date = documentSnapshot.get("created_at") as! Date
// new:
let timestamp: Timestamp = documentSnapshot.get("created_at") as! Timestamp
let date: Date = timestamp.dateValue()
Please audit all existing usages of Date when you enable the new behavior. In a future release, the behavior will be changed to the new behavior, so if you do not follow these steps, YOUR APP MAY BREAK.

Вопрос: я просто создаю новую запись;Я вообще не использовал объект Date.Могу ли я безопасно проигнорировать это предупреждение?

1 Ответ

0 голосов
/ 19 октября 2018

Можно игнорировать, хотя с v0.8.2 или плагином Firebase вы можете избежать предупреждения, используя настройки:

await firestore.settings(timestampsInSnapshotsEnabled: true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...