인프런 커뮤니티 질문&답변

이승용님의 프로필 이미지
이승용

작성한 질문수

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

FetchMore 로딩 UI 작업하기

ScrollController 동작이 안되서 질문드립니다.

작성

·

244

0

"완성된 Pagination 로직 실행해보기" 강의에서 Scroll 위치를 찾기 위해서 반영한 ScrollController에서 Listener를 등록해도 스크롤 할때 동작을 하지 않아서 문의드립니다.

 

- 리스너를 등록해도 스크롤 시 print('run') 이 동작을 안합니다..

답변 2

0

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요!

스크롤 리스너는 initState에서 등록하고 있습니다.

초급 강의의 제 라이플 사이클 내용을 기억 해보시면 initState는 State 클래스 첫 생성때 이외에는 절대로 다시 실행되지 않습니다.

initState가 실행되는 상황을 만드시면 문제가 해결될거라 생각됩니다. (예: 재실행)

감사합니다!

이승용님의 프로필 이미지
이승용
질문자

재실행을 해도 동작을 안하네요 코드도 동일한데요,,

 

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

다음으로 의심 해볼만한건 scroll controller를 리스트에 넣어주지 않은 경우입니다. 스크롤 컨트롤러를 아무데서도 사용하고 있지 않다면 아무리 리스너를 입력 해봤자 당연히 작동하지 않습니다. 확인 부탁드립니다.

0

안녕하세요, 인프런 AI 인턴입니다.

Flutter 응용 프로그램에서 ScrollController를 사용할 때 스크롤 이벤트 리스너가 작동하지 않는 문제는 몇 가지 일반적인 원인으로 인해 발생할 수 있습니다. 우선 ScrollController가 올바르게 위젯에 연결되었는지 확인하십시오. 그 후, 리스너가 어떻게 등록되었는지 점검해야 합니다.
리스너가 위젯의 initState 메서드 내부에서 ScrollController에 추가되었는지 확인하십시오. 또한 리스너 내부의 조건문이 적절하게 설정되었는지, 예를 들어 스크롤 위치가 촉발 조건임을 검토하십시오. 끝으로 리스너 메서드 내에 프린트 문이 올바르게 포함되어 있는지 확인하세요.

샘플로 참고할 수 있는 기본적인 코드 구조는 다음과 같습니다.

@override
void initState() {
  super.initState();
  _scrollController = ScrollController();
  _scrollController.addListener(scrollListener);
}

void scrollListener() {
  if (_scrollController.offset >= _scrollController.position.maxScrollExtent &&
      !_scrollController.position.outOfRange) {
    print('run');
    //pagination 로직 실행
  }
}

리스너를 위와 같이 등록하였지만 여전히 문제가 해결되지 않는다면, 리스너의 조건문이 이벤트를 적절하게 캐치하는지, _scrollController의 다른 속성들이 적절한 값으로 설정되어 있는지 확인해 보세요. 또한 사용하는 ListView 또는 ScrollView 위젯이 ScrollController와 연결되어 있는지 확인이 필요합니다.

위의 사항들을 체크해보시고, 여전히 문제가 해결되지 않는다면 좀 더 구체적인 코드와 함께 문의 부탁드립니다.

감사합니다.

이승용님의 프로필 이미지
이승용

작성한 질문수

질문하기