Flutter: создание режима прокрутки, который сжимает центральный элемент, прежде чем разрешить прокрутку списка
Я создаю вид прокрутки, который дополняет этот центральный элемент дополнительным пространством по вертикали. Я хочу выполнить две вещи:
1- Уменьшите заполнение центрального элемента с той же скоростью, с которой пользователь двигает пальцем. Например, если отступ центрального элемента составляет 50 пикселей, а пользователь переместил палец на 10 пикселей, я бы хотел уменьшить отступ до 40.
2- Я хотел бы остановить фактическую прокрутку представления списка до тех пор, пока отступ для центрального элемента не станет 0. Представление списка должно прокручиваться как обычно, если отступ центрального элемента равен 0.
Я немного потерялся здесь. Я пытался поиграть с реализацией моих собственных ScrollController и ScrollPhysics, но мне не удалось добиться именно того, что я ищу. Я также видел, что во Flutter есть класс ScrollPosition, который управляет позицией для каждого прокручиваемого виджета, но я не смог понять, как их использовать для достижения желаемого поведения.
Может ли кто-нибудь указать мне правильное направление?
1 ответ
Изменить physics
свойство ListView, NeverScrollablePhysics()
не позволяет прокручивать.
Может быть, использовать GestureDetector
для обнаружения свайпов.
Однако будьте осторожны с размещением этого виджета. Это может помешать нормальной прокрутке listView.
Попробуйте поэкспериментировать с animationController
вместо того, чтобы вызывать setState() несколько раз, бесполезно обновлять экран несколько раз только для того, чтобы изменить заполнение.