无法将文件图像分配给参数



所以我试图通过以下方式制作多张上传图片:

_selectImage(ImagePicker().getImage(source: ImageSource.gallery), 1);
_selectImage(ImagePicker().getImage(source: ImageSource.gallery), 2);
_selectImage(ImagePicker().getImage(source: ImageSource.gallery), 3);

当这种方法:

void _selectImage(Future<PickedFile> image, int imageNumber) async{
FileImage tempImg = (await image) as FileImage;
switch(imageNumber){
case 1: setState(() => _image1 = tempImg);
break;
case 2: setState(() => _image3 = tempImg);
break;
case 2: setState(() => _image3 = tempImg);
break;
}
}

但它说"FileImage"不能分配给这里的参数类型"File":

Widget _displayChild() {
if (_image1 == null){
return Padding(
padding: const EdgeInsets.fromLTRB(15.0, 20.0, 15.0, 20.0),
child: new Icon(Icons.add, color: grey,),
);
}else{
return Padding(
padding: const EdgeInsets.fromLTRB(15.0, 20.0, 15.0, 20.0),
child: Image.file(_image1)
);
}
}

有人能帮忙吗?这个新版本让我很困惑

您可能误解了应该分配的文件,所以我花了几分钟时间将其实现为一个快速的main.dart文件,并使其为您工作。

import 'dart:io';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
void main() {
runApp(
MaterialApp(
home: MyWidget(),
),
);
}
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
File _image1;
File _image2;
File _image3;
void _selectImage(int imageNumber) async {
final PickedFile pickedFile = await ImagePicker().getImage(source: ImageSource.gallery);
switch (imageNumber) {
case 1:
setState(() => _image1 = File(pickedFile.path));
break;
case 2:
setState(() => _image3 = File(pickedFile.path));
break;
case 2:
setState(() => _image3 = File(pickedFile.path));
break;
}
}
Widget _displayChild() {
if (_image1 == null) {
return RaisedButton(
padding: const EdgeInsets.fromLTRB(15.0, 20.0, 15.0, 20.0),
child: new Icon(Icons.add, color: Colors.blue),
onPressed: () => _selectImage(1),
);
} else {
return Padding(
padding: const EdgeInsets.fromLTRB(15.0, 20.0, 15.0, 20.0),
child: Image.file(_image1),
);
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'Build some widgets!',
style: Theme.of(context).textTheme.headline4,
),
_displayChild(),
],
),
),
);
}
}

从文件加载图像会创建该文件的内存副本,该副本保留在ImageCache中。不监视基础文件的更改。如果它确实发生了更改,应用程序应该从ImageCache中收回该条目。

最新更新