После перезапуска сеанса отладки setData (json, merge: true) выдает исключение в MethodChannelFirestore. Метод add был вызван на null - PullRequest
0 голосов
/ 14 июля 2020

После перезапуска сеанса отладки (cmd-shft-F5) в vscode при вызове setData (, merge: true) строка 31 из method_channel_firestore.dart выдает исключение:

    queryObservers[call.arguments['handle']].add(snapshot);

потому что queryObservers[call.arguments['handle']] имеет значение null, поэтому вызывается исключение add on null. Обновление проходит успешно и отображается в базе данных firebase, но исключение расстраивает во время отладки и, похоже, указывает на проблему в базовом sdk хранилища хранилища, удерживающем потоки или запросы из предыдущего перезапуска?

Код setData является прямое обновление и работает без исключения перед перезапуском:

    if (userId == null || pool.id == null) throw "Missing user or pool";

    Map<String, dynamic> json = {"reminderPrefs": toJson()};

    await Firestore.instance
        .collection(USER_COLLECTION)
        .document(userId)
        .collection('pools')
        .document(pool.id)
        .setData(json, merge: true);

Есть ли что-то, что я делаю неправильно с vscode, что не разрывает соединение с firestore и не генерирует эти исключения.

Моя конфигурация отладки vscode выглядит так:

    {
      "program": "lib/main_dev.dart",
      "name": "Flutter Dev",
      "args": ["-t", "lib/main_dev.dart", "--flavor", "dev"],
      "request": "launch",
      "type": "dart"
    },

Вот моя основная:

  Crashlytics.instance.enableInDevMode = false;
  FlutterError.onError = Crashlytics.instance.recordFlutterError;

  PooliConfig configured = PooliConfig(
    flavor: "dev",
    child: AppLaunchPage(),
  );
  await AssetLoader.loadPooliAssets();

  runApp(configured);
}
...