【问题标题】:Firestore emulator not working after cloud_firestore 0.14.* upgradeCloud_firestore 0.14.* 升级后 Firestore 模拟器无法正常工作
【发布时间】:2020-12-24 17:16:08
【问题描述】:

我刚刚从 0.13.* 升级到 cloud_firestore 0.14.4,并针对重大更改进行了重构。一切都很好,除了我的模拟器坏了。

下面是我的新 main(重构后),带有用于在本地模拟器和云 Firestore 之间切换的简单标志。现在它读取/写入我的云 Firestore 数据库,而不管我的 usingFirebaseEmulator 值如何?

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  final usingFirebaseEmulator = true;

  if (usingFirebaseEmulator) {
    FirebaseFirestore.instance.settings = Settings(
      host: Platform.isAndroid ? '10.0.2.2:8080' : 'localhost:8080',
      sslEnabled: false,
      persistenceEnabled: false,
    );
  } else {
    FirebaseFirestore.instance.settings = Settings();
  }

  // this line now required?
  Firebase.initializeApp();

  runApp(MyApp());
}

编辑:下面是我的 0.13.* main()。当我切换回它的分支时,模拟器会很好地填充。

void main() {
  WidgetsFlutterBinding.ensureInitialized();

  final usingFirebaseEmulator = true;

  if (usingFirebaseEmulator) {
    Firestore.instance.settings(
      host: Platform.isAndroid ? '10.0.2.2:8080' : 'localhost:8080',
      sslEnabled: false,
      persistenceEnabled: false,
    );
  } else {
    Firestore.instance.settings();
  }

  runApp(MyApp());
}

【问题讨论】:

    标签: firebase google-cloud-firestore firebase-cli


    【解决方案1】:

    啊。我在cloud_firestore 页面上看到,initializeApp 调用必须在设置之前,所以下面工作

    void main() 异步 { 最终 usingFirebaseEmulator = true;

      WidgetsFlutterBinding.ensureInitialized();
    
      await Firebase.initializeApp();
    
      if (usingFirebaseEmulator) {
        FirebaseFirestore.instance.settings = Settings(
          host: Platform.isAndroid ? '10.0.2.2:8080' : 'localhost:8080',
          sslEnabled: false,
          persistenceEnabled: false,
        );
      }
    
      runApp(MyApp());
    }
    

    【讨论】:

      猜你喜欢
      • 2016-11-24
      • 1970-01-01
      • 1970-01-01
      • 2016-05-29
      • 1970-01-01
      • 2017-06-10
      • 2019-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多