Масштабирование карусели изображений в трепете

#flutter

Вопрос:

У меня есть a GuestureDetector с его дочерним элементом, Carousel Image где пути к изображениям хранятся в списке. Пользователь onTap GuestureDetector переходит к другому виджету FullScreenView , чтобы увеличить масштаб текущего Carousel Image . В FullScreenView качестве параметра требуется URL-адрес изображения. Как передать 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:

Вместо того, чтобы оборачивать GestureDetector фотографии вокруг, вы оборачиваете каждую карусель вокруг изображения. Это может быть проще реализовать. Подобный этому:

 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...
  ],
 );
}
 

Комментарии:

1. Поскольку AssetImage не является виджетом, нам нужно использовать изображение. Имущество.