После перезапуска сеанса отладки (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);
}