Flutter 图像未通过firebase存储颤振加载
图像网络请求Flutter 图像未通过firebase存储颤振加载,flutter,Flutter,图像网络请求 Image.network( FirebaseStorage.instance .ref() .child(blog.data["picture1"]) .getDownloadURL() .toString(), ),
Image.network(
FirebaseStorage.instance
.ref()
.child(blog.data["picture1"])
.getDownloadURL()
.toString(),
),
picture1是一个字符串,格式为“blogPic/${email}/${number}\u a”。
此字符串指向firestorage位置
错误
解析图像编解码器时引发了以下断言:
无法加载资产:图像(图像:NetworkImage(“未来”实例,比例:1.0),frameBuilder:null,loadingBuilder:null,对齐方式:中心,this.excludeFromSemantics:false,filterQuality:low)
引发异常时,这是堆栈:
#0平台组装包.load(包:颤振/src/services/asset_bundle.dart:221:7)
#1个AssetBundleImageProvider.\u loadAsync(包:flatter/src/painting/image\u provider.dart:664:31)
#2 AssetBundleImageProvider.load(包:颤振/src/Paint/image_provider.dart:648:14)
#3 ImageProvider.resolveStreamForKey。(包装:颤振/src/painting/image_供应商。dart:501:13)
...
图像提供程序:AssetImage(bundle:null,name:“图像(图像:NetworkImage(“未来”的实例,比例:1.0),frameBuilder:null,loadingBuilder:null,alignment:center,this.excludeFromSemantics:false,filterQuality:low)”)
图像键:AssetBundleImageKey(bundle:PlatformAssetBundle#33ea4(),名称:“图像(图像:NetworkImage(“未来”实例,比例:1.0),frameBuilder:null,loadingBuilder:null,对齐:居中,this.excludeFromSemantics:false,filterQuality:low)”,比例:1.0)
使用FutureBuilder小部件
FutureBuilder(builder: (context , snapshot){
switch(snapshot.connectionState){
case ConnectionState.none:
return Text('No Data');
break;
case ConnectionState.waiting:
return Container(
width: 200,
height: 200,
child: CircularProgressIndicator(),
);
break;
case ConnectionState.active:
return Container(
width: 200,
height: 200,
child: CircularProgressIndicator(),
);
break;
case ConnectionState.done:
return Container(
width: 200,
height: 200,
child: Image.network(snapshot.data.toString() , fit: BoxFit.contain,),
);
break;
}
return Container(
width: 200,
height: 200,
child: CircularProgressIndicator(),
);
}, future: _getImage(document['filePath']),)
Future<String> _getImage(filePath) async{
String url = await storage.ref().child('launch').child('$filePath.jpg').getDownloadURL().whenComplete((){
}).catchError((error){
return null;
});
return url;
}
FutureBuilder(构建器:(上下文,快照){
交换机(快照.连接状态){
案例连接状态。无:
返回文本(“无数据”);
打破
案例连接状态。正在等待:
返回容器(
宽度:200,
身高:200,
子对象:CircularProgressIndicator(),
);
打破
案例连接状态.active:
返回容器(
宽度:200,
身高:200,
子对象:CircularProgressIndicator(),
);
打破
案例连接状态。完成:
返回容器(
宽度:200,
身高:200,
子项:Image.network(snapshot.data.toString(),fit:BoxFit.contain,),
);
打破
}
返回容器(
宽度:200,
身高:200,
子对象:CircularProgressIndicator(),
);
},未来:_getImage(文档['filePath']),)
Future\u getImage(文件路径)异步{
字符串url=wait storage.ref().child('launch').child('$filePath.jpg').getDownloadURL().whenComplete(){
}).catchError((错误){
返回null;
});
返回url;
}
使用FutureBuilder小部件
FutureBuilder(builder: (context , snapshot){
switch(snapshot.connectionState){
case ConnectionState.none:
return Text('No Data');
break;
case ConnectionState.waiting:
return Container(
width: 200,
height: 200,
child: CircularProgressIndicator(),
);
break;
case ConnectionState.active:
return Container(
width: 200,
height: 200,
child: CircularProgressIndicator(),
);
break;
case ConnectionState.done:
return Container(
width: 200,
height: 200,
child: Image.network(snapshot.data.toString() , fit: BoxFit.contain,),
);
break;
}
return Container(
width: 200,
height: 200,
child: CircularProgressIndicator(),
);
}, future: _getImage(document['filePath']),)
Future<String> _getImage(filePath) async{
String url = await storage.ref().child('launch').child('$filePath.jpg').getDownloadURL().whenComplete((){
}).catchError((error){
return null;
});
return url;
}
FutureBuilder(构建器:(上下文,快照){
交换机(快照.连接状态){
案例连接状态。无:
返回文本(“无数据”);
打破
案例连接状态。正在等待:
返回容器(
宽度:200,
身高:200,
子对象:CircularProgressIndicator(),
);
打破
案例连接状态.active:
返回容器(
宽度:200,
身高:200,
子对象:CircularProgressIndicator(),
);
打破
案例连接状态。完成:
返回容器(
宽度:200,
身高:200,
子项:Image.network(snapshot.data.toString(),fit:BoxFit.contain,),
);
打破
}
返回容器(
宽度:200,
身高:200,
子对象:CircularProgressIndicator(),
);
},未来:_getImage(文档['filePath']),)
Future\u getImage(文件路径)异步{
字符串url=wait storage.ref().child('launch').child('$filePath.jpg').getDownloadURL().whenComplete(){
}).catchError((错误){
返回null;
});
返回url;
}