Flutter-ListView图像在滚动时消失得太早,仅适用于物理iOS设备

时间:2019-11-29 21:26:48

标签: ios listview caching flutter

我有一个使用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医生显示所有系统都很好。

0 个答案:

没有答案