250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 계측
- binding
- Coroutines
- intent
- drift
- DART
- textview
- TEST
- data
- LifeCycle
- viewmodel
- Compose
- Dialog
- android
- appbar
- textfield
- scroll
- Flutter
- livedata
- ScrollView
- Navigation
- tabbar
- CustomScrollView
- Kotlin
- 앱
- activity
- 테스트
- 앱바
- 안드로이드
- Button
Archives
- Today
- Total
Study Record
[Flutter] 실시간 스크롤 offset 알아보기 본문
728x90
✍ 실시간 스크롤 offset 알아보기
사용자가 스크롤 위젯을 스크롤할 때마다 얼마큼 스크롤 됐는지 알고 싶을 때가 있다. 이럴 때 ScrollController 를 사용하여 리스너를 추가해 주면 된다. 스크롤 위젯은 controller 인자가 있는 위젯이면 가능하다. (ex. ListView, GridView, CustomScrollView 등)
원하는 스크롤 뷰의 controller 인자에 미리 선언한 scrollController 를 넣고 addListener 함수로 리스너 함수를 선언해 주면 scrollController.offset 값으로 현재 스크롤 값을 알 수 있다. 위젯이 사라지기 전에 removeListener 와 dispose 를 해주는 것도 하면 안전하게 ScrollController 를 제거할 수 있다.
import 'package:flutter/material.dart';
class ScrollControlView extends StatefulWidget {
ScrollControlView({Key? key}) : super(key: key);
@override
State<ScrollControlView> createState() => _ScrollControlViewState();
}
class _ScrollControlViewState extends State<ScrollControlView> {
final scrollController = ScrollController();
@override
void initState() {
super.initState();
scrollController.addListener(scrollListener);
}
@override
void dispose() {
scrollController.removeListener(scrollListener);
scrollController.dispose();
super.dispose();
}
scrollListener() {
print("스크롤 offset : ${scrollController.offset}");
}
@override
Widget build(BuildContext context) {
return ListView(
physics: BouncingScrollPhysics(),
controller: scrollController,
children: List.generate(
100,
(index) => ListTile(
title: Text("item ${index}"),
),
),
);
}
}
728x90
'Flutter > widget_scrollView' 카테고리의 다른 글
[Flutter] 스와이프로 위젯 삭제하기 (Dismissible) (0) | 2023.03.10 |
---|---|
[Flutter] RefreshIndicator (새로 고침) (0) | 2023.03.09 |
[Flutter] 스크롤바 (Scrollbar) (0) | 2023.03.09 |
[Flutter] SliverPersistentHeader (스크롤 중 위젯 고정) (0) | 2023.03.09 |
[Flutter] CustomScrollView 에서 앱바 컨트롤하기(숨김, 고정 등) - SliverAppBar (0) | 2023.03.08 |