scrollcontroller не привязан ни к каким представлениям прокрутки (Swiper)

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

но когда я пытаюсь вызвать функцию, она возвращает ошибку «scrollcontroller not attached».

Я добавил SwiperController, но все тот же.

Вот мой код:

SwiperController swiperController;

  @override
  Widget build(BuildContext context) {
    return Container(
        height: MediaQuery.of(context).size.height,
        width: MediaQuery.of(context).size.width,
        color: Colors.black,
        child: Swiper(
          controller: swiperController,
          index: _index,
          scrollDirection: Axis.horizontal,
          itemBuilder: (BuildContext c, int i) {
            return StoriesPerUser(
              storiesList: widget.storiesList,
              selectedIndex: i,
              updateFunction: callBack,
            );
          },
          itemCount: widget.storiesList.length,
          loop: false,
          duration: 1000,
        ));
  }

  callBack() {
    setState(() {
     _index++; 
    });
  }

Please help.

person Gentle    schedule 29.10.2019    source источник


Ответы (2)


ОТВЕТ:

Если кто-то из вас, ребята, хочет использовать этот пакет, и если вам нужна функция, аналогичная моей, вместо обновления индекса просто используйте один из методов SwiperController, который равен next().

это решило мою проблему:

callBack() {
    setState(() {
      swiperController.next();
    });
  }
person Gentle    schedule 30.10.2019
comment
Хорошая работа над решением этой проблемы! - person Yster; 30.10.2019

Обновление:

Похоже, что SwiperController не был создан и инициализирован. Вы можете сделать это, переопределив метод initState:

@override
void initState() {
  controller = SwiperController();
  controller.length = 10
  //controller.fillRange(0, 10, SwiperController());
  super.initState();
}
person Yster    schedule 29.10.2019
comment
Привет! Я видел похожие проблемы, но, к сожалению, SwiperController не имеет этого initialScrollOffset - person Gentle; 29.10.2019
comment
могу я спросить, откуда взялось это autoplayes? - person Gentle; 29.10.2019
comment
Это дает много ошибок. Спасибо за ваше время. Я думаю, что swipecontroller не следует рассматривать как нечто похожее на scrollcontroller. - person Gentle; 29.10.2019
comment
Извините, я нашел здесь пример: github.com/ лучший-флаттер / flutter_swiper / blob / master / example / lib /. Я думаю, вам нужно только создать экземпляр контроллера. Обновлю ответ. - person Yster; 29.10.2019
comment
да, я тоже изучил это, но изменил свою логику, потому что мне нужно было реализовать логику пропуска, паузы, возобновления. в основном я пытаюсь создать поток, похожий на истории facebook и instagram. - person Gentle; 29.10.2019
comment
Привет, братан .length недоступен в swipercontroller. но спасибо за попытку помочь! - person Gentle; 30.10.2019