我正在使用 image_picker 和 image_cropper 插件在相机和图片库的帮助下选择或捕获图像。我从 image_picker 获得了一个图像文件。现在,我正在使用 Image.asset()小部件在 Circle Avatar 中显示图像。谁能告诉我如何将图像文件转换为资产图像?
我的代码:
//Function that decides if image is returned or not(If not, then it will show the default circle avator)
File getImageWidget() {
if (_selectedImage != null) {
return _selectedImage;
} else {
return null;
}
}
//Function to set the image in the circle avatar
circleAva(){
return profileIconSelector(
setProfileIconHighQuality(getImageWidget() ?? userDetails.profile_pic,
userDetails.loginInitFrom),
userDetails.name,
SizeConfig.heightMultiplier * 5);
}
//Function to get image from Camera or Gallery
getImage(ImageSource source) async {
this.setState((){
_inProcess = true;
});
File image = await ImagePicker.pickImage(source: source);
if(image != null){
File cropped = await ImageCropper.cropImage(
sourcePath: image.path,
aspectRatio: CropAspectRatio(
ratioX: 1, ratioY: 1),
compressQuality: 100,
maxWidth: 700,
maxHeight: 700,
compressFormat: ImageCompressFormat.jpg,
androidUiSettings: AndroidUiSettings(
toolbarColor: Colors.deepOrange,
toolbarTitle: "Cropper",
statusBarColor: Colors.deepOrange.shade900,
backgroundColor: Colors.white,
)
);
this.setState((){
_selectedImage = cropped;
_inProcess = false;
});
} else {
this.setState((){
_inProcess = false;
});
}
}
答案 0 :(得分:1)
您无法从应用中添加资产图片。资产图像是您手动添加到项目中的图像,但是可以在选择图像后将其保存到路径,然后使用Image.file(File.fromUri(Uri.file(IMAGE_PATH)))
。
答案 1 :(得分:0)
幸运的是,我自己找到了解决方案。
对于 Image.file()小部件,我们必须提供 File 类型的图像。 并且,对于 AssetImage()或 Image.asset()小部件,我们需要传递 String 类型的图像路径。
因此在 AssetImage()中使用文件类型图像的解决方案或 Image.asset()小部件:
File _selectedImage = fetchedFromCameraOrGallery;
getImageWidget() {
if (_selectedImage != null) {
return CircleAvatar(
radius: SizeConfig.heightMultiplier * 5,
backgroundImage: AssetImage(
_selectedImage.path, //Convert File type of image to asset image path
),
);
}
}
我们只需使用 _selectedImage.path 即可将 File 类型的图像文件转换为有效的Asset图像路径格式。