我有一个使用ListView.builder的应用程序,该应用程序使用指向s3存储桶图像的CachedNetworkImage构建带有图像的卡。
问题是,仅在物理iOS设备上,一旦图像在滚动时大约偏离屏幕一半,图像就会突然消失,但是如果向上滚动,图像会立即重新出现。 这具有笨拙的震撼效果,并且与其他地方的行为不一致。
此设置可以在Android设备,Android仿真器和iOS仿真器上完美运行,但是我的物理iPhone XR滚动时出现问题。
我在每个平台上拍摄了10秒的滚动行为视频:
(iPhone XR) https://drive.google.com/open?id=1GDPd8oLcqQdOQrfYnyknLSzjiyfBZJSe
(星系s8) https://drive.google.com/open?id=1gJ7WLRI0IzJNwQCro-RMqHVxbcRtJ6xo
以下代码适用于每个图像,尽管即使使用不同的小部件(例如基本Image.network),问题仍然存在:
FadeInImage(
placeholder: MemoryImage(kTransparentImage),
image: CachedNetworkImageProvider(recipe.imageURL),
fit: BoxFit.cover,
),
在iOS模拟器上不会发生此问题。
小于500kb的图片似乎不会发生此问题,但是我似乎无法获得小于1mb的相机拍摄的图像大小。
我尝试将捕获的图像质量尽可能降低(0):
File image = await ImagePicker.pickImage(source: source, imageQuality: 0);
我还尝试了提升ListView.builder cacheExtent:
ListView.builder(
cacheExtent: 10000,
itemCount: recipesList.length,
itemBuilder: (BuildContext context, int index) {
return new RecipeCard(
recipe: recipesList[index],
inFavorites: userFavorites.contains(recipesList[index].id),
onFavoriteButtonPressed: _handleFavoritesListChanged,
);
},
),
Flutter医生显示所有系统都很好。