【发布时间】:2022-10-07 04:16:24
【问题描述】:
我正在用颤振构建一个网络应用程序,我想要一个更改个人资料图片的选项。要从图库中选择图像,我使用 image_picker_web 2.1.1 包。
class ImagePickerService {
late Image? img = Image.asset(\'whatever\'); //has to be initialised
Future<void> pickImage() async {
img = await ImagePickerWeb.getImageAsWidget();
}
}
我没有将 pickImage() 的类型设置为 Future<Image?> 因为我必须从 Future 转换。这个资产(\'whatever\'),虽然不是很优雅,但不会造成任何问题,因为在选择图像时_fileLoaded 设置为true 之前,我将用户名的首字母显示为头像。没有它,我得到一个没有初始化的错误。
设置页面类中的相关 sn-ps:
late Image? avatar;
bool _fileLoaded = false;
final ImagePickerService _ips = ImagePickerService();
Center(
child: displayAvatar(),
),
TextButton.icon(
onPressed: () {
setState(() {
_ips.pickImage();
avatar = _ips.img;
_fileLoaded = true;
});
},
icon: const Icon(Icons.edit),
label: const Text(\'Change avatar\'),
),
Widget displayAvatar() {
if (_fileLoaded) {
return CircleAvatar(
backgroundImage: avatar as ImageProvider, radius: 50.0);
} else...
我搜索了类似的问题,但除了添加 as ImageProvider 之外没有找到任何答案,在我的情况下,它会从 IDE 中删除错误并让我运行项目,但是当我按下按钮来更改头像,即使类型应该是正确的。请问,你知道有什么解决办法吗?