为什么 cloud_firestore 即使在完成配置后也无法在 FlutterFire 中工作?

Why is cloud_firestore not working in FlutterFire even after complete configuration?

我想从 Firebase 获取数据,为此我已将 Firebase 集成到我的 Flutter 应用程序中 SciFish.

pubspec.yaml中,我添加了插件:

dependencies:
   firebase_core: ^1.17.0
   cloud_firestore: ^3.1.16

flutterfire configure 根目录中的命令看起来不错:

我可以看到 android/app/google-services.json :

初始化 Firebase 后,我的 main() 看起来像:

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(
    options: DefaultFirebaseOptions.currentPlatform,
  );
  runApp(const MyApp());
}

在 TemperaturePage 中,我创建了获取数据的方法,但 await 中的打印语句不起作用。

final _firestore = FirebaseFirestore.instance;
void temperatureStream() async{
    print('this prints');
    await for(var snapshot in _firestore.collection('temperature').snapshots()){
      for(var temp in snapshot.docs){
        print('this doesnt');
        print(temp.data());
      }
   }
}

ListTile(
   title: const Text('Show Temperature'),
   onTap: () {
       temperatureStream();
   }
)

运行 控制台说,

Performing hot restart...
Syncing files to device sdk gphone64 x86 64...
Restarted application in 1,994ms.
D/EGL_emulation(10450): app_time_stats: avg=6669.94ms min=6669.94ms max=6669.94ms count=1
D/EGL_emulation(10450): app_time_stats: avg=36988.71ms min=420.94ms max=73556.49ms count=2
D/EGL_emulation(10450): app_time_stats: avg=128.04ms min=13.50ms max=930.64ms count=9
I/flutter (10450): this prints
W/DynamiteModule(10450): Local module descriptor class for com.google.android.gms.providerinstaller.dynamite not found.
I/DynamiteModule(10450): Considering local module com.google.android.gms.providerinstaller.dynamite:0 and remote module com.google.android.gms.providerinstaller.dynamite:0
W/ProviderInstaller(10450): Failed to load providerinstaller module: No acceptable module com.google.android.gms.providerinstaller.dynamite found. Local version is 0 and remote version is 0.
D/EGL_emulation(10450): app_time_stats: avg=345.94ms min=10.15ms max=4548.11ms count=14
I/flutter (10450): this prints
D/EGL_emulation(10450): app_time_stats: avg=131.44ms min=14.88ms max=2143.03ms count=19
I/flutter (10450): this prints

尝试解决出现在第一个 onTap() 上的这些警告,但是 #462 and #164 doesn't say anything nor does or this one

android/app/src/main/AndroidManifest.xml中,我尝试在<application />

之前添加这两行
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

但结果还是一样。我在这里错过了什么?

我的 Firebase 集合如下所示:

构建平台:Windows10Pro 颤动版本:2.10.4 飞镖版本:2.16.2

正如我们在会议中讨论的那样,您的 collection 名称中有一个空的 space。

  • “温度”

这就是它返回 null 的原因。

未来提示

  • 确保在构建数据时检查您的 firebase collection 名称中没有空的 spaces :)

干杯!