-
[Flutter] ListView.builder 를 사용할 때 고려해야 하는 점함께 공부하는 Flutter 2024. 1. 2. 16:27반응형
ListView.builder
를 사용할 때 화면의 공간을 효과적으로 확보하고 렌더링에 문제를 최소화하기 위해 몇 가지 주의 사항이 있습니다. 아래는 주의해야 할 사항들에 대한 간단한 정리입니다.- CustomScrollView 활용:
ListView.builder
를 사용할 때는 가능하면CustomScrollView
안에서 사용하는 것이 좋습니다.CustomScrollView
는 여러 개의 다른 scrollable 위젯을 함께 사용할 수 있도록 해주어 효과적인 렌더링을 도와줍니다.
CustomScrollView( slivers: [ SliverList( delegate: SliverChildBuilderDelegate( (BuildContext context, int index) { return YourListItem(index); }, childCount: itemCount, ), ), ], )
- SingleChildScrollView 사용에 주의:
ListView.builder
를SingleChildScrollView
안에서 사용하지 않도록 주의해야 합니다. 이는 성능에 부정적인 영향을 미칠 수 있습니다.
// 좋은 예 CustomScrollView( slivers: [ SliverList( delegate: SliverChildBuilderDelegate( (BuildContext context, int index) { return YourListItem(index); }, childCount: itemCount, ), ), ], ) // 나쁜 예 SingleChildScrollView( child: Column( children: List.generate( itemCount, (index) => YourListItem(index), ), ), )
- Padding 주의:
ListView.builder
를 사용할 때 불필요한Padding
을 피하십시오.ListView.builder
자체가 패딩을 관리하므로 중복된 패딩을 피하고 성능을 향상시킵니다.
// 좋은 예 ListView.builder( padding: EdgeInsets.symmetric(vertical: 16.0), itemBuilder: (BuildContext context, int index) { return YourListItem(index); }, itemCount: itemCount, ) // 나쁜 예 Padding( padding: EdgeInsets.symmetric(vertical: 16.0), child: ListView.builder( itemBuilder: (BuildContext context, int index) { return YourListItem(index); }, itemCount: itemCount, ), )
- Column, Row, Stack 사용에 주의:
ListView.builder
를Column
,Row
, 또는Stack
안에 직접 넣는 것은 피해야 합니다. 이는 성능 문제를 유발할 수 있습니다.
// 좋은 예 CustomScrollView( slivers: [ SliverList( delegate: SliverChildBuilderDelegate( (BuildContext context, int index) { return YourListItem(index); }, childCount: itemCount, ), ), ], ) // 나쁜 예 Column( children: [ YourHeaderWidget(), ListView.builder( itemBuilder: (BuildContext context, int index) { return YourListItem(index); }, itemCount: itemCount, ), YourFooterWidget(), ], )
- 데이터 양 주의:
- 만약 많은 아이템을 표시해야 하는 경우,
ListView.builder
의itemBuilder
에서는 최대한 가볍게 처리하도록 노력해야 합니다. 무거운 연산은 필요한 경우 비동기로 처리하거나 페이지네이션을 고려해야 합니다.
- 만약 많은 아이템을 표시해야 하는 경우,
ListView.builder( itemBuilder: (BuildContext context, int index) { // 무거운 연산 피하기 // 비동기 처리 또는 페이지네이션 고려 return YourListItem(index); }, itemCount: itemCount, )
이러한 주의 사항을 지키면서
ListView.builder
를 사용하면 성능을 최적화하고 렌더링에 문제를 피할 수 있습니다.반응형'함께 공부하는 Flutter' 카테고리의 다른 글
[Flutter] 알아두면 정말 유용한 addPostFrameCallback (0) 2024.01.04 [Flutter] GestureDetector 사용 (2) 2024.01.03 Flutter 정규식 설명과 예시 (2) 2024.01.02 [Flutter] 정규식 설명과 사용 예시 (0) 2024.01.01 [Flutter] Wrap (0) 2024.01.01 - CustomScrollView 활용: