반응형
Flutter에서 ScrollPhysics
는 스크롤 동작을 제어하는 역할을 합니다.
다양한 스크롤 방식이나 동작을 정의할 수 있으며, 스크롤의 물리적 특성을 설정할 수 있습니다.ScrollPhysics
의 종류는 기본적인 스크롤 동작을 제어하는 것부터 커스텀 스크롤 물리를 만드는 것까지 다양하다.
ScrollPhysics
의 종류
1. BouncingScrollPhysics
- 설명: 스크롤 끝에 도달했을 때 약간 튕기는 애니메이션을 제공합니다. iOS에서 기본적으로 사용되는 스크롤 동작
- 사용 예시:
ListView( physics: BouncingScrollPhysics(), children: [ /* 리스트 아이템들 */ ], )
- 주로 사용하는 플랫폼: iOS
2. ClampingScrollPhysics
- 설명: 스크롤 끝에 도달했을 때 튕김 없이 스크롤이 끝나는 동작입니다. Android에서 기본적으로 사용되는 스크롤 동작
- 사용 예시:
ListView( physics: ClampingScrollPhysics(), children: [ /* 리스트 아이템들 */ ], )
- 주로 사용하는 플랫폼: Android
3. AlwaysScrollableScrollPhysics
- 설명: 콘텐츠의 크기가 스크롤 가능하지 않더라도 항상 스크롤이 가능한 상태로 유지합니다. 일반적으로 스크롤이 필요하지 않은 경우에도 스크롤이 되도록 강제하는 동작
- 사용 예시:
ListView( physics: AlwaysScrollableScrollPhysics(), children: [ /* 리스트 아이템들 */ ], )
4. NeverScrollableScrollPhysics
- 설명: 스크롤이 불가능하도록 합니다. 리스트가 스크롤 되지 않게 고정된 경우에 사용
- 사용 예시:
ListView( physics: NeverScrollableScrollPhysics(), children: [ /* 리스트 아이템들 */ ], )
5. FixedExtentScrollPhysics
- 설명: 고정된 아이템 크기를 가진 스크롤 리스트에 사용됩니다. 예를 들어
ListWheelScrollView
와 같은 위젯에서 각 항목의 크기가 고정되어 있을 때 유용 - 사용 예시:
ListWheelScrollView( physics: FixedExtentScrollPhysics(), itemExtent: 50.0, children: [ /* 리스트 아이템들 */ ], )
6. PageScrollPhysics
- 설명: 페이지 기반의 스크롤 동작을 제공합니다. 스크롤이 페이지 단위로 스냅되며, 주로
PageView
에서 사용 - 사용 예시:
PageView( physics: PageScrollPhysics(), children: [ /* 페이지들 */ ], )
7. RangeMaintainingScrollPhysics
- 설명: 스크롤이 변경될 때 스크롤 범위 내에서 위치를 유지하는 동작을 제공합니다. 특정 상황에서 스크롤 위치가 동적으로 변경될 때 유용
- 사용 예시:
ListView( physics: RangeMaintainingScrollPhysics(), children: [ /* 리스트 아이템들 */ ], )
8. AlwaysScrollableScrollPhysics
- 설명: 리스트의 내용이 적더라도 항상 스크롤이 가능하도록 만듭니다. 보통
RefreshIndicator
와 함께 사용할 때 유용 - 사용 예시:
ListView( physics: AlwaysScrollableScrollPhysics(), children: [ /* 리스트 아이템들 */ ], )
커스텀 ScrollPhysics
- 설명: Flutter에서는 위에 나열된 기본 제공 물리 동작 외에도,
ScrollPhysics
를 상속하여 자신만의 커스텀 스크롤 동작을 만들 수 있습니다. 예를 들어 스크롤 속도를 변경하거나, 스냅 동작을 커스터마이징할 수 있음
반응형
'프로그래밍 > Flutter' 카테고리의 다른 글
[Flutter] 상태관리 (0) | 2024.05.15 |
---|---|
[Flutter] Open API JSON 파싱 (0) | 2023.10.29 |
[Flutter] HTTP 구조 (0) | 2023.10.29 |
[Flutter] Lambdas (0) | 2023.10.29 |
[Flutter] Future (0) | 2023.10.16 |