Flutter: создание режима прокрутки, который сжимает центральный элемент, прежде чем разрешить прокрутку списка

Я создаю вид прокрутки, который дополняет этот центральный элемент дополнительным пространством по вертикали. Я хочу выполнить две вещи:

1- Уменьшите заполнение центрального элемента с той же скоростью, с которой пользователь двигает пальцем. Например, если отступ центрального элемента составляет 50 пикселей, а пользователь переместил палец на 10 пикселей, я бы хотел уменьшить отступ до 40.

2- Я хотел бы остановить фактическую прокрутку представления списка до тех пор, пока отступ для центрального элемента не станет 0. Представление списка должно прокручиваться как обычно, если отступ центрального элемента равен 0.

Я немного потерялся здесь. Я пытался поиграть с реализацией моих собственных ScrollController и ScrollPhysics, но мне не удалось добиться именно того, что я ищу. Я также видел, что во Flutter есть класс ScrollPosition, который управляет позицией для каждого прокручиваемого виджета, но я не смог понять, как их использовать для достижения желаемого поведения.

Может ли кто-нибудь указать мне правильное направление?

1 ответ

Решение

Изменить physics свойство ListView, NeverScrollablePhysics() не позволяет прокручивать.

Может быть, использовать GestureDetector для обнаружения свайпов.

Однако будьте осторожны с размещением этого виджета. Это может помешать нормальной прокрутке listView.

Попробуйте поэкспериментировать с animationController вместо того, чтобы вызывать setState() несколько раз, бесполезно обновлять экран несколько раз только для того, чтобы изменить заполнение.

Другие вопросы по тегам