[Flutter] 스크롤 감지 및 위치 확인

gozero·2021년 9월 1일
0

1. ScrollController 선언

final ScrollController _scrollController = ScrollController();

2. initState 안에 _scrollController.addListene 선언


void initState() {
  _scrollController.addListener(() {
    scrollListener();
  });
  super.initState();
}

3. dispose 안에 _scrollController.dispose 선언

  
  void dispose() {
    _scrollController.dispose();
    super.dispose();
  }

scrollListener

스크롤 맨 위, 맨 밑 감지

scrollListener() async {
  // print('offset = ${_scrollController.offset}');

  if (_scrollController.offset == _scrollController.position.maxScrollExtent 
        && !_scrollController.position.outOfRange) {
    print('스크롤이 맨 바닥에 위치해 있습니다');
  } else if (_scrollController.offset == _scrollController.position.minScrollExtent 
        && !_scrollController.position.outOfRange) {
    print('스크롤이 맨 위에 위치해 있습니다');
  }
}

maxScrollExtent = 스크롤 맨 밑
minScrollExtent = 스크롤 맨 위

스크롤 위치 감지

print('offset = ${_scrollController.offset}');

_scrollController.offset = 스크롤 위치 감지

어디서 사용하나요?

SingleChildScrollView(
  controller: _scrollController,
  child: Column()
)
ListView(
  controller: _scrollController,
  child: Container()
)
profile
Flutter를 제일 좋아하는 앱 프론트엔드 개발자입니다!

1개의 댓글

comment-user-thumbnail
2022년 5월 15일

혹시~ outOfRange는 왜 써야 하는지 알 수 있을까요?

답글 달기