상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
궁금한 상식 보기
벵갈루루에서의 라이브 공연은 어떻게 관람하나요?
모노레포에서 주요 성능 지표는 무엇인가요?
워싱턴야자에 관한 신고 사례는 무엇인가요?
고막을 관찰할 때 필요한 도구는 무엇인가요?
고막 관련 상담을 위한 전문가 찾는 방법은?
최소 경계 상자 Minimum bounding box와 3D 모델링의 관계는 무엇인가요?
광장시장에서 가격대는 어떤가요?
광장시장 내에서 무료로 즐길 수 있는 체험이 있나요?
땅콩이 체중 감소에 도움이 될까요?
좋아하는 견과류의 조합은 무엇인가요?
견과류를 먹으면 소화에 좋은가요?
견과류를 고르는 팁은 무엇인가요?
Previous
Next
수정하기 - Flutter에서 ScrollController를 사용하는 방법은 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
Fl<a href='https://sangseek.com/sangseeks/utter/ko'>utter</a>에서 `ScrollController`는 스크롤 가능한 위젯의 스크롤 위치를 제어하고, 스크롤 이벤트를 감지하는 데 사용됩니다. `ScrollController`를 사용하면 스크롤 위치를 프로그래밍적으로 조정하거나, 스크롤 이벤트에 반응하여 UI를 업데이트할 수 있습니다. 아래에서는 `ScrollController`의 기본 사용법과 몇 가지 예제를 통해 자세히 설명하겠습니다. 1. ScrollController 생성 `ScrollController`는 `<a href='https://sangseek.com/sangseeks/ScrollView/ko'>ScrollView</a>`와 같은 스크롤 가능한 위젯에 연결하여 사용합니다. 먼저 `ScrollController`의 인스턴스를 생성해야 합니다. ```dart ScrollController _scrollController = ScrollController(); ``` 2. ScrollController를 Scrollable Widget에 연결 `ScrollController`를 생성한 후, 이를 `<a href='https://sangseek.com/sangseeks/ListView/ko'>ListView</a>`, `<a href='https://sangseek.com/sangseeks/SingleChildScrollView/ko'>SingleChildScrollView</a>`, `GridView` 등과 같은 스크롤 가능한 위젯에 연결합니다. 아래는 `ListView`에 `ScrollController`를 연결하는 예제입니다. ```dart ListView.builder( controller: _scrollController, itemCount: 100, itemBuilder: (context, index) { return ListTile( title: Text('Item $index'), ); }, ); ``` 3. 스크롤 이벤트 감지 `ScrollController`는 스크롤 위치를 감지할 수 있는 `addListener` 메서드를 제공합니다. 이를 통해 스크롤 위치가 변경될 때마다 특정 작업을 수행할 수 있습니다. ```dart _scrollController.addListener(() { print('Scroll position: ${_scrollController.position.pixels}'); }); ``` 4. 스크롤 위치 조정 `ScrollController`를 사용하면 스크롤 위치를 프로그래밍적으로 조정할 수 있습니다. 예를 들어, 버튼을 클릭했을 때 특정 위치로 스크롤할 수 있습니다. ```dart void _scrollToTop() { _scrollController.animateTo( 0, // 스크롤할 위치 duration: Duration(milliseconds: 300), // 애니메이션 지속 시간 curve: Curves.easeInOut, // 애니메이션 곡선 ); } ``` 5. ScrollController의 <a href='https://sangseek.com/sangseeks/Lifecycle 관리/ko'>Lifecycle 관리</a> `ScrollController`는 <a href='https://sangseek.com/sangseeks/StatefulWidget/ko'>StatefulWidget</a>에서 사용될 때, 위젯의 생명주기에 맞춰 관리해야 합니다. 위젯이 생성될 때 `ScrollController`를 초기화하고, 위젯이 제거될 때는 반드시 `dispose` 메서드에서 해제해야 합니다. ```dart @override void initState() { super.initState(); _scrollController = ScrollController(); } @override void dispose() { _scrollController.dispose(); super.dispose(); } ``` 6. 전체 예제 아래는 `ScrollController`를 사용하여 스크롤 가능한 리스트와 버튼을 포함한 전체 예제입니다. ```dart import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: ScrollControllerExample(), ); } } class ScrollControllerExample extends StatefulWidget { @override _ScrollControllerExampleState createState() => _ScrollControllerExampleState(); } class _ScrollControllerExampleState extends State<ScrollControllerExample> { late ScrollController _scrollController; @override void initState() { super.initState(); _scrollController = ScrollController(); _scrollController.addListener(() { print('Scroll position: ${_scrollController.position.pixels}'); }); } @override void dispose() { _scrollController.dispose(); super.dispose(); } void _scrollToTop() { _scrollController.animateTo( 0, duration: Duration(milliseconds: 300), curve: Curves.easeInOut, ); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('ScrollController Example')), body: Column( children: [ ElevatedButton( onPressed: _scrollToTop, child: Text('Scroll to Top'), ), Expanded( child: ListView.builder( controller: _scrollController, itemCount: 100, itemBuilder: (context, index) { return ListTile( title: Text('Item $index'), ); }, ), ), ], ), ); } } ``` 결론 `ScrollController`는 Flutter에서 스크롤 가능한 위젯을 제어하고, 스크롤 이벤트를 감지하는 데 매우 유용한 도구입니다. 이를 통해 사용자 경험을 향상시키고, 스크롤 위치를 프로그래밍적으로 조정할 수 있습니다. 위의 예제를 참고하여 `ScrollController`를 활용해 보세요.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기