如何从firebase获取图像/文件列表?

如何从firebase获取图像/文件列表?,firebase,flutter,stream,firebase-storage,Firebase,Flutter,Stream,Firebase Storage,您好,我正在尝试从Firebase Bucket/存储中获取图像列表,但在调用runApp()时不断收到错误代码。下面是与我的问题对应的代码和错误消息。任何帮助我都将不胜感激。我试着按照错误消息的建议去做,但最终还是出了问题 import 'package:authorize_user/Screens/image_screen.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/mat

您好,我正在尝试从Firebase Bucket/存储中获取图像列表,但在调用runApp()时不断收到错误代码。下面是与我的问题对应的代码和错误消息。任何帮助我都将不胜感激。我试着按照错误消息的建议去做,但最终还是出了问题

import 'package:authorize_user/Screens/image_screen.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';

void main() {
  Firebase.initializeApp();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Images',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: ImageScreen(),
    );
  }
}

class ImageScreen extends StatelessWidget {
  Stream<QuerySnapshot> getDocuments() {
    return FirebaseFirestore.instance
            .collection('Accounts/ZqEbRkLFbW34CXKybmr7/images')
            .snapshots();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: StreamBuilder<QuerySnapshot>(
        stream: getDocuments(),
        builder: (context, streamSnapshots) {
          if (streamSnapshots.connectionState == ConnectionState.waiting) {
            return Center(child: CircularProgressIndicator());
          }
          final documents = streamSnapshots.data.docs;
          return ListView.builder(
            itemCount: streamSnapshots.data.docs.length,
            itemBuilder: (context, index) => Container(
              padding: EdgeInsets.all(8),
              child: Text(documents[index].data().length.toString()),
            ),
          );
        },
      ),
      floatingActionButton:
          FloatingActionButton(child:Icon(Icons.add), onPressed: () {}),
    );
  }
}
import'包:授权用户/Screens/image\u screen.dart';
导入“包:firebase_core/firebase_core.dart”;
进口“包装:颤振/材料.省道”;
void main(){
Firebase.initializeApp();
runApp(MyApp());
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“颤振图像”,
主题:主题数据(
主样本:颜色。蓝色,
视觉密度:视觉密度。自适应平台密度,
),
主页:ImageScreen(),
);
}
}
类ImageScreen扩展了无状态小部件{
流getDocuments(){
返回FirebaseFirestore.instance
.collection('Accounts/ZqEbRkLFbW34CXKybmr7/images')
.快照();
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:StreamBuilder(
流:getDocuments(),
生成器:(上下文,流快照){
if(streamSnapshots.connectionState==connectionState.waiting){
返回中心(子项:CircularProgressIndicator());
}
最终文档=streamSnapshots.data.docs;
返回ListView.builder(
itemCount:streamSnapshots.data.docs.length,
itemBuilder:(上下文,索引)=>容器(
填充:边缘设置。全部(8),
子项:文本(文档[index].data().length.toString()),
),
);
},
),
浮动操作按钮:
FloatingActionButton(子:Icon(Icons.add),按下:(){}),
);
}
}
错误消息:

发生异常。错误(ServicesBinding.defaultBinaryMessenger是在初始化绑定之前访问的。如果您正在运行应用程序,并且需要在调用
runApp()
之前(例如,在插件初始化期间)访问二进制messenger,则需要显式调用
WidgetsFlutterBinding.ensureInitialized())
first。如果正在运行测试,可以调用
TestWidgetsFlutterBinding.ensureInitialized()
作为测试的
main()
方法的第一行来初始化绑定。)

试试这个

void main(){
WidgetsFlutterBinding.ensureInitialized();
runApp(MyApp());
}
参考:


您需要运行
WidgetsFlutterBinding.ensureInitialized()Firebase.initializeApp()之前的代码>
main()中

void main()异步{
WidgetsFlutterBinding.ensureInitialized();
等待Firebase.initializeApp();
runApp(MyApp());
}

您的代码正在查询云Firestore。它没有“桶”。也许你把它和云存储混淆了,云存储确实如此。我试过了,但它仍然显示Firebase.initializeApp()嗨,这不起作用。我添加了两个,但都没有运行。你有什么错误?没关系,我只是重新启动了我的项目。非常感谢你