Flutter - 类型 'List<dynamic>' 不是类型 'List<File>' 的子类型
Flutter - type 'List<dynamic>' is not a subtype of type 'List<File>'
我试图使用 ListView.builder 动态显示图像列表,因为它们被保存到文件类型的数组中,
这是我的代码:
List<File> viewImg = [].toList();
_imgFromGallery() async {
File image = await ImagePicker.pickImage(
source: ImageSource.gallery, imageQuality: 50);
setState(() {
_image = image;
viewImg.add(image);
});
}
ListView.builder(
itemCount: viewImg.length,
itemBuilder: (BuildContext context, int index) {
return new SingleChildScrollView(
physics: ScrollPhysics(),
child: Column(children: [
Container(
margin:EdgeInsets.only(top30),
width: size.width * .8,
height: 149,
decoration: BoxDecoration(
image: DecorationImage(
image:FileImage(viewImg[index]),
)),
),
每次我 运行 它都会得到错误:
type 'List<dynamic>' is not a subtype of type 'List<File>'.
请帮助我并提前致谢。
简单替换
List<File> viewImg = [].toList();
有了这个
List<File> viewImg = [];
当你说:
List<File> viewImg = [].toList();
您实际上是在创建一个 List<dynamic>
并将其分配给一个 List<File>
,这是一个错误。你可以做的是,要么使用 List.from
List<File> viewImg = List<File>.from([].toList());
或
List<File> viewImg = <File>[].toList();
这些只是做简单事情的糟糕方法(因为您只是复制列表),您应该使用:
List<File> viewImg = [];
或
var viewImg = <File>[];
我试图使用 ListView.builder 动态显示图像列表,因为它们被保存到文件类型的数组中,
这是我的代码:
List<File> viewImg = [].toList();
_imgFromGallery() async {
File image = await ImagePicker.pickImage(
source: ImageSource.gallery, imageQuality: 50);
setState(() {
_image = image;
viewImg.add(image);
});
}
ListView.builder(
itemCount: viewImg.length,
itemBuilder: (BuildContext context, int index) {
return new SingleChildScrollView(
physics: ScrollPhysics(),
child: Column(children: [
Container(
margin:EdgeInsets.only(top30),
width: size.width * .8,
height: 149,
decoration: BoxDecoration(
image: DecorationImage(
image:FileImage(viewImg[index]),
)),
),
每次我 运行 它都会得到错误:
type 'List<dynamic>' is not a subtype of type 'List<File>'.
请帮助我并提前致谢。
简单替换
List<File> viewImg = [].toList();
有了这个
List<File> viewImg = [];
当你说:
List<File> viewImg = [].toList();
您实际上是在创建一个 List<dynamic>
并将其分配给一个 List<File>
,这是一个错误。你可以做的是,要么使用 List.from
List<File> viewImg = List<File>.from([].toList());
或
List<File> viewImg = <File>[].toList();
这些只是做简单事情的糟糕方法(因为您只是复制列表),您应该使用:
List<File> viewImg = [];
或
var viewImg = <File>[];