[flutter] pagecontroller 오류 해결하기

박망키·2022년 8월 23일
0

Flutter 야금야금 먹기

목록 보기
71/97
post-custom-banner

메인화면에 PageView.builder로 자동슬라이더를 만들었는데 이상하게 첫 진입때는 의도한대로 작동하다가 다른페이지로 이동하면 자꾸
이오류가나왔다

화면에 스크롤 뷰가 연결이 안된다는 뉘앙스..?

아니 페이지 이동하면서 컨트롤러.dispose()도 했는데...!왜연결하려고 난리지?!(이해불가)

찾아보니 컨트롤러.hasClients 로 if문을 걸어서 연결된 pageview가 있을때 이벤트(컨트롤러.nextPage())를 실행하도록 하는것이였다.

처음에 initState에

@override
  void initState() {
    // TODO: implement initState.

    super.initState();

    ///화면 빌드 끝난후
    WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
      if (slideController.hasClients) {
        Timer.periodic(const Duration(seconds: 2), (Timer timer) {
          if (_controller.currentIndex < _controller.slideList.length - 1) {
            slideController.nextPage(
              duration: const Duration(milliseconds: 350),
              curve: Curves.easeIn,
            );
          } else {
            slideController.animateToPage(
              0,
              duration: const Duration(milliseconds: 350),
              curve: Curves.easeIn,
            );
          }
        });
      }
    });
  }

이렇게 작성을 하니까

ㅎㅎ?페이지뷰 빌드되기전에 엑세스할수 없다규..?
모가 문제지..하다가

@override
  void initState() {
    // TODO: implement initState.

    super.initState();

    ///화면 빌드 끝난후
    WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
      Timer.periodic(const Duration(seconds: 2), (Timer timer) {
        if (slideController.hasClients) {
          if (_controller.currentIndex < _controller.slideList.length - 1) {
            slideController.nextPage(
              duration: const Duration(milliseconds: 350),
              curve: Curves.easeIn,
            );
          } else {
            slideController.animateToPage(
              0,
              duration: const Duration(milliseconds: 350),
              curve: Curves.easeIn,
            );
          }
        }
      });
    });
  }

if (slideController.hasClients) {}를 Timer안에 넣었는데 오류없이 잘 작동이 되었따..!
쒸익...쒸익...

profile
무럭무럭 자라는 망키
post-custom-banner

0개의 댓글