#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 не является виджетом, нам нужно использовать изображение. Имущество.