Flutter 中的缩放图像轮播

时间:2021-04-07 10:16:13

标签: flutter

我有一个 GuestureDetector,其子代为 Carousel Image,其中图像路径存储在列表中。 onTapGuestureDetector 导航到另一个小部件 FullScreenView 以放大当前的 Carousel ImageFullScreenView 需要图像 url 作为参数。如何将屏幕中当前图像的网址传递给 FullScreenView

这是我的GuestureDetector :

GestureDetector(
        child: picturesUI(),
        onTap: () {
          Navigator.push(context, MaterialPageRoute(
            builder: (_) {
              return FullPhotoScreen(url: widget.imagesListUrl[i]);
            },
          ));
        },
      ),

picturesUI 是一个 Carousel Image

Widget picturesUI() {
    return Carousel(
      dotSize: 5,
      dotBgColor: Colors.transparent,
      autoplay: false,
      images: [
        AssetImage(
          widget.imagesListUrl[0],
        ),
        AssetImage(
          widget.imagesListUrl[1],
        ),
        AssetImage(
          widget.imagesListUrl[2],
        ),
        AssetImage(
          widget.imagesListUrl[3],
        ),
        AssetImage(
          widget.imagesListUrl[4],
        ),
        AssetImage(
          widget.imagesListUrl[5],
        ),
      ],
    );
  }
```

1 个答案:

答案 0 :(得分:0)

不是将 GestureDetector 包裹在picturesUI 周围,而是包裹在每个Carousel AssetImage 周围。实施起来可能更容易。像这样:

Widget picturesUI() {
return Carousel(
  dotSize: 5,
  dotBgColor: Colors.transparent,
  autoplay: false,
  images: [
    GestureDetector( 
      onTap: () {
        Navigator.push(context, MaterialPageRoute(
          builder: (_) {
            return FullPhotoScreen(url: widget.imagesListUrl[0]);
          },
        ));
      },
      child: AssetImage(
        widget.imagesListUrl[0],
      )
    ),
    GestureDetector( 
      onTap: () {
        Navigator.push(context, MaterialPageRoute(
          builder: (_) {
            return FullPhotoScreen(url: widget.imagesListUrl[1]);
          },
        ));
      },
      child: AssetImage(
        widget.imagesListUrl[1],
      )
    ),
    GestureDetector( 
      onTap: () {
        Navigator.push(context, MaterialPageRoute(
          builder: (_) {
            return FullPhotoScreen(url: widget.imagesListUrl[2]);
          },
        ));
      },
      child: AssetImage(
        widget.imagesListUrl[2],
      )
    ),
    //and so on...
  ],
 );
}