在 Flutter 中从图库中选取图像时出现问题
Having issue when pick image from gallery in Flutter
我是 Flutter 新手。
我正在使用以下内容从图库中挑选图像。
第一次,我得到了提到的异常。
获得异常后,如果我调整图像大小,加载图像时不会遇到任何问题。
我不确定是什么导致了这个问题。
GetImage
final pickedFile = await picker.getImage(source: ImageSource.gallery );
setState(() {
if(pickedFile != null){
_image=File(pickedFile.path);
print(_image.path);
}else{
print("no Image selected");
}
});
显示图片
class CameraChild extends StatelessWidget{
String imagePath = null;
CameraChild(File image){
if(image != null){
imagePath = image.path;
}
}
@override
Widget build(BuildContext context){
AssetImage assetImage;
if(imagePath == null){
assetImage=AssetImage('images/camera_child.png');
}else{
assetImage=AssetImage(imagePath);
}
Image image = new Image(image: assetImage, width: 90, height: 90,);
//return Container(child: image,);
return Container(
child: ClipRRect(
borderRadius: BorderRadius.circular(45),
child: image,
),
);
}
}
异常:
════════图片资源服务捕获到异常═══════════════════════════════ ═════════════════
抛出以下断言来解析图像编解码器:
无法加载资产:/data/user/0/com.sixdrops.drmom/cache/image_picker1457837975547141122.jpg
抛出异常时,这是堆栈:
#0 PlatformAssetBundle.load(包:flutter/src/services/asset_bundle.dart:225:7)
#1 AssetBundleImageProvider._loadAsync(包:flutter/src/painting/image_provider.dart:668:31)
#2 AssetBundleImageProvider.load(包:flutter/src/painting/image_provider.dart:651:14)
#3 ImageProvider.resolveStreamForKey。 (包:flutter/src/painting/image_provider.dart:504:13)
...
图片提供者:AssetImage(bundle: null, name: "/data/user/0/com.sixdrops.drmom/cache/image_picker1457837975547141122.jpg")
图片键:AssetBundleImageKey(bundle: PlatformAssetBundle#2ea2b(), name: "/data/user/0/com.sixdrops.drmom/cache/image_picker1457837975547141122.jpg", scale: 1.0)
══════════════════════════════════════════════════ ══════════════════════════════════════════════════
W/System (24478):忽略 header X-Firebase-Locale 因为它的值为 null。
W/System (24478):忽略 header X-Firebase-Locale 因为它的值为 null。
W/System (24478): 忽略 header X-Firebase-Locale 因为它的值为空。
使用文件图像而不是资产图像。
return Container( child: ClipRRect( borderRadius: BorderRadius.circular(45), child: Image.file(File(imagePath)), ), );
我是 Flutter 新手。 我正在使用以下内容从图库中挑选图像。 第一次,我得到了提到的异常。 获得异常后,如果我调整图像大小,加载图像时不会遇到任何问题。 我不确定是什么导致了这个问题。
GetImage
final pickedFile = await picker.getImage(source: ImageSource.gallery );
setState(() {
if(pickedFile != null){
_image=File(pickedFile.path);
print(_image.path);
}else{
print("no Image selected");
}
});
显示图片
class CameraChild extends StatelessWidget{
String imagePath = null;
CameraChild(File image){
if(image != null){
imagePath = image.path;
}
}
@override
Widget build(BuildContext context){
AssetImage assetImage;
if(imagePath == null){
assetImage=AssetImage('images/camera_child.png');
}else{
assetImage=AssetImage(imagePath);
}
Image image = new Image(image: assetImage, width: 90, height: 90,);
//return Container(child: image,);
return Container(
child: ClipRRect(
borderRadius: BorderRadius.circular(45),
child: image,
),
);
}
}
异常:
════════图片资源服务捕获到异常═══════════════════════════════ ═════════════════ 抛出以下断言来解析图像编解码器: 无法加载资产:/data/user/0/com.sixdrops.drmom/cache/image_picker1457837975547141122.jpg
抛出异常时,这是堆栈: #0 PlatformAssetBundle.load(包:flutter/src/services/asset_bundle.dart:225:7)
#1 AssetBundleImageProvider._loadAsync(包:flutter/src/painting/image_provider.dart:668:31) #2 AssetBundleImageProvider.load(包:flutter/src/painting/image_provider.dart:651:14) #3 ImageProvider.resolveStreamForKey。 (包:flutter/src/painting/image_provider.dart:504:13) ... 图片提供者:AssetImage(bundle: null, name: "/data/user/0/com.sixdrops.drmom/cache/image_picker1457837975547141122.jpg") 图片键:AssetBundleImageKey(bundle: PlatformAssetBundle#2ea2b(), name: "/data/user/0/com.sixdrops.drmom/cache/image_picker1457837975547141122.jpg", scale: 1.0) ══════════════════════════════════════════════════ ══════════════════════════════════════════════════ W/System (24478):忽略 header X-Firebase-Locale 因为它的值为 null。 W/System (24478):忽略 header X-Firebase-Locale 因为它的值为 null。 W/System (24478): 忽略 header X-Firebase-Locale 因为它的值为空。
使用文件图像而不是资产图像。
return Container( child: ClipRRect( borderRadius: BorderRadius.circular(45), child: Image.file(File(imagePath)), ), );