# [Flutter] ListView.builder에 Footer 구현하기

# 들어가며

`ListView.builder` 또는 `ListView.separated` 등을 활용할 때 itemBuilder를 통해서 출력할 item widget을 리턴하게 되는데, 이때 마지막 부분에 footer를 넣거나 margin을 주어야하는 경우가 있다.

기본적인 ListView와는 다르게 builder 함수를 사용하는 경우 단순하게 위젯을 넣기가 곤란하다. 이는 간단하게 해당 아이템이 마지막 아이템인지 또는 첫번째 아이템인지를 체크하여 분기시키는 로직만 추가하면 된다.

다음은 itemBuilder를 활용하여 리스트의 마지막에 FooterWidget을 추가하는 간단한 예제 코드다.

## 구현

```dart
// data - item List
ListView.separated(
itemCount : data.length
itemBuilder : (context, index){
	// last item인지 확인하는 조건문 사용
	// 마지막 아이템인 경우에만 FooterWidget이 위젯트리에 생성된다.
	if(index == data.length -1){
		return Column(
			children: [
				ItemWidget(item: data[index]),
				FooterWidget(),
			],
		);
	} else {
		return ItemWidget(item: data[index])
	}
}
)
```

다음과 같이 구현하면 마지막 아이템 아래에만 필요한 Footer 위젯이 생성된다. 동일한 방법으로 첫번째 아이템 위쪽에만 `SizedBox()`를 활용해서 margin을 주는 방법도 존재한다.

# 결론

Footer가 아니더라도 보통 리스트의 마지막 공간에는 마지막 아이템임을 표시하는 indicator를 두거나 margin을 두는 경우가 있는데 이럴 때도 활용할 수 있으며, Infinite scroll pagination 패키지를 사용할 때도 builder를 통해서 위젯을 생성하기 때문에 알아두면 여기저기 유용하게 써먹을 수 있는 방법인 것 같다.
