Я хотел бы создать виджет, который ведет себя так же, как списки горизонтальной прокрутки (например, для рекомендуемых приложений) в приложении Google Play.
Пример того, что я имею в виду:
Я пробовал использовать виджет Page Viewer, но он не делает то же самое. Некоторые примечательные факты:
1) 3 полностью квадратичных изображения видны полностью, а еще одно показано частично. Второй (зеленоватый) прямо в центре.
2) Крайнее левое изображение (синее) идеально совмещено с надписью «Рекомендовано для вас».
3) Все 4 изображения в квадрате имеют закругленные углы.
4) Он поддерживает привязку элементов
Это лучшее, что мне удалось воспроизвести с помощью виджета PageView:
- Красный - это цвет фона контейнера, содержащего просмотр страницы.
- Зеленый - это цвет для четных элементов, а синий - для нечетных элементов.
- Внутри каждого предмета добавляется изображение размером 100х100.
Это код:
return Container(
width: double.infinity,
color: Colors.red,
height: 100,
child:
PageView(
pageSnapping: true,
controller:
PageController(initialPage: 1, viewportFraction: 0.315),
children: List<Widget>.generate(10, (index) {
return Container(
color: index%2 ==0 ? Colors.green : Colors.blue,
child:Image.network("http://via.placeholder.com/100x100",
fit: BoxFit.fitHeight)
);
})));
В моем коде есть 2 вещи, которые не сработают:
1) Я не могу отобразить частично видимый элемент с правой стороны, сохраняя 3 полностью видимых элемента, а второй идеально центрированный, как в исходной форме изображения в Google Play, просто используя viewportFraction.
2) Я не могу применить закругленные углы к изображениям предметов, потому что, как вы видите, контейнер не квадратный, а изображение. Поэтому, когда я применяю ClipRRect, он применяется неправильно. Я попытался добавить еще один контейнер, увеличив его размер до 100x100, и применить ClipRRect к изображению внутри этого контейнера, но когда он находится внутри PageView, кажется, что указанная ширина / высота не имеют никакого эффекта. Кажется, что они контролируются внутри PageView.
Итак, может ли кто-нибудь помочь в решении этих проблем, чтобы получить что-то с таким же поведением, что и горизонтальный прокручиваемый список Google Play?
Ваше здоровье!