Вертикальный прокручиваемый выдвижной ящик Flutter

#flutter #flutter-layout #flutter-dependencies #flutter-animation

#flutter #Макет flutter #зависимости flutter-зависимости #Трепещущая анимация

Вопрос:

Я хотел бы создать что-то вроде этого

У меня есть страница со списком товаров, и я хотел бы сделать видимой часть «Корзины» только при прокрутке до нижней части экрана и при нажатии на продукт и возможности прокрутки вверх для перехода к экрану корзины.

Решением может быть создание a Stack с двумя Container внутри и иметь переменную, которая представляет текущий% экрана первого контейнера (продуктов) и перемещает их с помощью виджета Positioned . Поэтому, когда я прокручиваю до самого низа, я могу поднять контейнер с продуктом и открыть контейнер с корзиной, и то же самое, когда я проведу пальцем вверх по первому контейнеру.

Это пример вертикального ящика с% и Positioned

Есть ли лучшее решение?

Редактировать

Я сделал это, но это не очень гладко

Структура:

 CustomScrollView()
|
|____SliverList()
|    |
|    |____Visibility() => Container() //Products list
|    |
|    |____Visibility() => Container() //Bottom Container with Borders
|
|____SliverList()
     |
     |____Visibility() => Container() //Bottom Cart part
     |
     |____Visibility() => Container() //Cart Screen
  

Начиная с только Products List видимого

Когда пользователь нажимает на продукт, Bottom Container и Bottom Cart будет виден

Я также вставил GestureDetector() Bottom Container и Bottom Cart .

С onVerticalDragUpdate помощью, если пользователь проводит пальцем вверх (details.delta.dy < 0) :

 _controller.animateTo(
                                             
    _controller.position.maxScrollExtent,
    duration: Duration(seconds: 1),
    curve: Curves.fastOutSlowIn,
);
  

И установите видимость Bottom Cart в false и установите Cart Screen видимость в true

Кроме того, я могу установить видимость Products List на false, но это приведет к ошибке в анимации прокрутки, поэтому я настроил отображение экрана мобильного устройства только Bottom Container Cart Screen с шириной экрана (я не тестировал его на других устройствах, это может быть ошибкой в пользовательском интерфейсе), а также блокирую прокруткус NeverScrollableScrollPhysics() помощью CustomScrollView

При пролистывании вниз Bottom Container я установил видимость Cart Screen в false, Bottom Cart в true и установил CustomScrollView физику AlwaysScrollableScrollPhysics() и сделал анимацию прокрутки:

 _controller.animateTo(
                                             
    _controller.position.maxScrollExtent,
    duration: Duration(seconds: 1),
    curve: Curves.fastOutSlowIn,
);
  

Это не очень гладко, потому что лучшей анимацией может быть перемещение вниз по Cart Screen с Positioned , вместо того, чтобы делать его невидимым

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

1. У Flutter есть нижний лист виджета для такой функциональности, вы пробовали его?

2. @ASADHAMEED Нижняя таблица не может быть решением, проверьте первую ссылку

3. для таких сложных анимированных макетов проверьте Flow CustomMultiChildLayout виджеты или

4. проверьте наши виджеты sliver, я думаю, это то, что они делают