Firebase 如何从url下载图像,然后直接使用File()在应用程序中使用此下载

Firebase 如何从url下载图像,然后直接使用File()在应用程序中使用此下载,firebase,flutter,http,dart,firebase-storage,Firebase,Flutter,Http,Dart,Firebase Storage,在我将图像上传到firebase存储并生成url并将其放入firestore之后。我想创建编辑功能,让用户更改照片 所以我想做的是显示旧图像+添加新图像 但问题是如何将URL图像转换为图像文件,以便此小部件被接受 FormBuilderImagePicker( onChanged: (value) { for (int i = 0; i < _focusList.length; i++) { _focusList[i].unfocus();

在我将图像上传到firebase存储并生成url并将其放入firestore之后。我想创建编辑功能,让用户更改照片

所以我想做的是显示旧图像+添加新图像

但问题是如何将URL图像转换为图像文件,以便此小部件被接受

FormBuilderImagePicker(
      onChanged: (value) {
        for (int i = 0; i < _focusList.length; i++) {
          _focusList[i].unfocus();
        }
      },
      key: ValueKey("Pics"),
      imageQuality: 100,
      attribute: 'Pics',
      initialValue: widget.picS.map<Widget>(
        (e) {
          widget.i++;
          return Image(
            image: NetworkToFileImage(
              url: e.toString(),
              file: fileFromDocsDir("${widget.i}.jpg"),
              debug: true,
            ),
          );
        },
      ).toList(),
      decoration: InputDecoration(
        labelStyle:
            Theme.of(context).textTheme.display1,
        labelText: 'Select Images',
        helperText:
            'First Image will be the Preview Image',
        hintText:
            "if you add a picture here that mean you remove all the picture you add before",
        hintStyle: TextStyle(
            color: Theme.of(context).errorColor),
      ),
      onSaved: (value) {
        _pic = value;
      },
      validators: [
        FormBuilderValidators.required(),
      ],
    ),
  ),
FormBuilderImagePicker(
一旦更改:(值){
对于(int i=0;i<\u focusList.length;i++){
_焦点列表[i].unfocus();
}
},
密钥:ValueKey(“Pics”),
图像质量:100,
属性:“Pics”,
初始值:widget.picS.map(
(e){
widget.i++;
返回图像(
图像:NetworkToFileImage(
url:e.toString(),
文件:fileFromDocsDir(${widget.i}.jpg”),
是的,
),
);
},
).toList(),
装饰:输入装饰(
标签样式:
Theme.of(context).textTheme.display1,
labelText:“选择图像”,
帮助文字:
'第一个图像将是预览图像',
hintText:
“如果您在此处添加图片,意味着您删除了之前添加的所有图片”,
hintStyle:TextStyle(
颜色:Theme.of(context.errorColor),
),
已保存:(值){
_pic=值;
},
验证器:[
FormBuilderValidators.required(),
],
),
),
错误:类型“Image”不是类型“File”的子类型,因此我想要的是如何放入initialValue一个文件列表,其中包含我从firestore获取的url图像,作为应用程序中的文件

请尝试
Image.File(您的文件)
。请注意,您必须将图像保存到设备并给出其路径

@MAHMOODEBRAHIM你好, 您可以使用FutureBuilder或StreamBuilder显示一些加载小部件并更改ui。在下载后将状态转换为另一个视图

Future<String> _createFileFromString() async {
final encodedStr = await http.get("url_image");// in base 64 format f.e
Uint8List bytes = base64.decode(encodedStr);
String dir = (await getApplicationDocumentsDirectory()).path;
File file = File(
    "$dir/" + DateTime.now().millisecondsSinceEpoch.toString() + ".png");//.png image format(it can be also jpg) 
await file.writeAsBytes(bytes);
return file.path;
 }
Future\u createFileFromString()异步{
final encodedStr=wait http.get(“url_image”);//采用base 64格式
Uint8List字节=base64.解码(编码器);
字符串dir=(等待getApplicationDocumentsDirectory()).path;
File=文件(
“$dir/”+DateTime.now().millissecondssinceepoch.toString()+“.png”);/.png图像格式(也可以是jpg)
等待文件。writeAsBytes(字节);
返回file.path;
}

感谢您的快速响应,但我这里的问题是如何在创建屏幕之前保存图像并获取路径+FormBuilderImage Picker accept File not image.File()的初始值