물에 살고싶은 개발자

Flutter에서의 리스트 출력: ListView vs ListView.builder 본문

Flutter

Flutter에서의 리스트 출력: ListView vs ListView.builder

돼지사랑 2023. 9. 13. 14:10

🔍 결론:ListView는 간단한 리스트를 구현할 때 적합하며, ListView.builder는 아이템의 수가 많을 때 성능을 최적화하기 위해 사용됩니다. 수영장을 생각하면서 각각의 장단점을 살펴보겠습니다.


일반적인 스크롤뷰나 반복문

🔸 사용법:SingleChildScrollViewListView 위젯을 사용하여 리스트를 출력합니다. SingleChildScrollView는 스크롤 가능한 위젯을 감싸는 데 사용되며, ListView는 리스트를 출력하는 데 사용됩니다. for문이나 map 함수를 사용하여 리스트의 아이템을 생성합니다.

ListView(
  children: <Widget>[
    ListTile(title: Text('Item 1')),
    ListTile(title: Text('Item 2')),
    // ... 다른 아이템들
  ],
)

🔸 장점:

  • 간결성: 이 방법은 수영장에서 모든 수영객이 동시에 물에 들어가는 것과 비슷합니다. 간단하고 직관적이죠. 특히 초보자나 간단한 리스트를 구현할 때는 이 방법이 더 편리할 수 있습니다.
  • 직접 제어: 모든 아이템을 미리 정의하기 때문에, 아이템 간의 관계나 특별한 조건을 적용하기가 쉽습니다. 마치 수영장에서 각각의 수영객을 직접 관리하는 것과 같습니다.

🔸 단점:

  • 성능 이슈: 아이템의 수가 많아질수록, 모든 아이템을 메모리에 미리 로드해야 하므로 성능 저하의 위험이 있습니다. 수영장이 너무 많은 사람들로 인해 혼잡해지는 것과 비슷한 상황입니다.
  • 메모리 사용량: 모든 아이템을 미리 생성하므로, 사용하지 않는 아이템까지 메모리에 할당됩니다. 마치 수영장에 물이 넘치는 것과 같은 상황이죠.

ListView.builder

🔸 사용법:ListView.builder 위젯을 사용하여 리스트를 출력합니다. itemCount 속성을 사용하여 리스트의 아이템 개수를 설정하고, itemBuilder 속성을 사용하여 각각의 아이템을 생성합니다.

ListView.builder(
  itemCount: items.length,
  itemBuilder: (context, index) {
    return ListTile(title: Text('Item ${items[index]}'));
  },
)

🔸 장점:

  • 동적 생성: ListView.builder는 화면에 보이는 아이템만 동적으로 생성합니다. 이는 수영장에 사람들이 필요에 따라 들어오고 나가는 것과 비슷합니다. 이로 인해 메모리 사용량이 크게 줄어들며, 성능도 향상됩니다.
  • 성능 최적화: 아이템이 화면 밖으로 나가면 해당 위젯은 파괴되고, 새로운 아이템이 화면에 들어올 때 재사용됩니다. 마치 수영장에서 빠르게 움직이는 사람들을 효율적으로 관리하는 것과 같습니다.

🔸 단점:

  • 코드 복잡성: ListView.builder를 사용하면 코드가 조금 더 복잡해질 수 있습니다. 수영장에서 특정 규칙을 따라 수영하는 것과 같이, 초보자에게는 다소 어려울 수 있습니다.
Comments