Есть ли какой-либо способ добавить касание справа к go вперед и нажатие слева на go назад, как истории из Instagram в flutter Pageview? - PullRequest
0 голосов
/ 18 июня 2020

Ожидаемая реализация вопроса аналогична историям в Instagram. Существует пакет под названием story_view в flutter, который делает то же самое, но, как я понимаю, невозможно добавить просмотр страницы в качестве дочернего. Так как это можно реализовать во флаттере?

1 Ответ

1 голос
/ 18 июня 2020

Для этого можно использовать GestureDetector и PageController при просмотре страницы. Где GestureDetector используется для получения позиции касания экрана и для вызова контроллера страницы на go вперед или назад в зависимости от этой позиции.

Оберните PageView(controller: _pageController,...) с GestureDetector, а затем определите onTapDown примерно так:


GestureDetector(
  onTapDown: (TapDownDetails details) {
    final RenderBox box = context.findRenderObject();
    final localOffset = box.globalToLocal(details.globalPosition);
    final x = localOffset.dx;

    // if x is less than halfway across the screen and user is not on first page 
    if(x < box.size.width / 2){
      //   _pageController.previousPage(...)
    }else{
      // Assume the user tapped on the other half of the screen and check they are not on the last page
      //  _pageController.nextPage(...)
    }

  },
  child: PageView(
    controller: _pageController,
    ...
  )
)

Как видите, я не полностью реализовал решение, но это должно быть то, что вы хотите

...