image - 在加载高分辨率图像时显示加载小部件
问题描述
我有一个照片库,里面有高分辨率的照片。我正在使用网格列出所有照片。而且,网络图像并非如此。
我想要的是在未显示照片时,我想在加载图像时显示spin_widget而不是空白框。
主类:
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: MyAppbar(
centerLogo: true,
),
body: GridView.count(
crossAxisCount: 2,
mainAxisSpacing: 8,
crossAxisSpacing: 8,
padding: EdgeInsets.all(8),
childAspectRatio: 1,
children: mapIndexed(
galleryItems,
(index, item) => PhotoItem(
photoItem: item,
onTap: () {
open(context, index);
},
),
).toList(),
),
);
}
每个照片项目。类名:PhotoItem
@override
Widget build(BuildContext context) {
return Material(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(4)),
clipBehavior: Clip.antiAlias,
child: Hero(
child: GestureDetector(
onTap: onTap,
child: Image.asset(
photoItem.assetName,
fit: BoxFit.cover,
),
),
tag: photoItem.assetName,
),
);
}
我可以使用缓存高度通过降低图像质量来快速显示图像。但是,在这种情况下,我想在小盒子上加载整个图像。我知道它会杀死手机。
解决方案
根据我的经验,总是使用 GridView.builder,当需要显示大量项目时效率更高。其次,始终使用缩略图进行列表,否则您的列表会很慢甚至最后崩溃。仅详细显示图片的原始尺寸。
推荐阅读
- javascript - 如何获取附近div元素的输入属性值和背景颜色?
- angular - Angular7 在 html 标记中的 img="" 上的字符串内插值抛出“不支持评估引号”
- azure - 设备未报告 IoT Edge 自定义模块
- sharepoint - 如何使用 Jquery 查找当前 sharepoint web 是否从父 web 继承权限
- docker - 多个 docker 过滤器选项是否执行本地 AND 或 OR 操作?
- c# - 为什么要避免直接实例化 CollectionView?
- python - 电子邮件说内容是无,知道为什么吗?
- php - PHP 继承适用于一个实例而不是另一个实例
- asp.net-core-webapi - 使用补丁请求 .Net Core 2.1 动态更改 Appsettings.Json
- c++ - 当值是非常量但使用常量表达式初始化时使用 constexpr?