flutter 如何在抖动中旋转CachedNetworkImage的图像?

gmxoilav  于 2023-01-14  发布在  Flutter
关注(0)|答案(1)|浏览(195)

这是flutter应用程序,只有人像模式。
我想显示我的产品的一些图像。当用户触摸图像时,我想使用CachedNetworkImage全屏显示。
但问题是,当宽度大于高度时,Boxfit.cover只显示图像的中间部分(左右两边没有显示)。如果我让它显示所有图片,那么上面和下面会有很多空白
我宁愿让图像(缓存网络图像)旋转90度,使整个图像可以适合全屏。
你知道吗?

tez616oj

tez616oj1#

在Flutter中,你可以使用Transform.rotate()widget来旋转图像。下面是一个如何使用它来旋转CachedNetworkImage的示例:

Transform.rotate(
    angle: 0.1, // angle in radians
    child: CachedNetworkImage(
        imageUrl: 'your_image_url',
        placeholder: (context, url) => CircularProgressIndicator(),
        errorWidget: (context, url, error) => Icon(Icons.error),
    ),
)

可以调整angle属性以更改旋转Angular 。Angular 的单位是弧度,而不是度。若要将度转换为弧度,可以使用公式radians =(度 * pi)/ 180。
您还可以使用AnimatedContainer,它具有可用于旋转图像的rotation属性,下面是一个示例:

AnimatedContainer(
    duration: Duration(seconds: 2),
    rotation: _angle,
    child: CachedNetworkImage(
        imageUrl: 'your_image_url',
        placeholder: (context, url) => CircularProgressIndicator(),
        errorWidget: (context, url, error) => Icon(Icons.error),
    ),
)

可以使用AnimationController控制旋转并更新容器中使用的_angle的值。
您也可以使用AnimatedBuilder和Animation来旋转图像。最好将CachedNetworkImage Package 在Container或SizedBox中,以确保图像具有固定大小,这样旋转将更可预测。

相关问题