如何从firebase获取图像/文件列表?
您好,我正在尝试从Firebase Bucket/存储中获取图像列表,但在调用runApp()时不断收到错误代码。下面是与我的问题对应的代码和错误消息。任何帮助我都将不胜感激。我试着按照错误消息的建议去做,但最终还是出了问题如何从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
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()嗨,这不起作用。我添加了两个,但都没有运行。你有什么错误?没关系,我只是重新启动了我的项目。非常感谢你