[flutter] ListView의 아이템에 애니메이션 효과 추가하기

안녕하세요! 오늘은 Flutter 애플리케이션에서 ListView의 각 아이템에 애니메이션 효과를 추가하는 방법에 대해 알아보겠습니다. ListView는 많은 양의 데이터를 스크롤 가능한 리스트 형태로 표시할 때 사용되며, 각 아이템에 애니메이션을 추가하면 사용자들에게 더 흥미로운 화면을 제공할 수 있습니다.

1. ListView.builder 사용하기

ListView에 애니메이션 효과를 추가하려면 ListView.builder를 사용하는 것이 좋습니다. ListView.builder를 사용하면 리스트 아이템을 동적으로 생성할 수 있고, 애니메이션을 쉽게 적용할 수 있습니다.

ListView.builder(
  itemCount: _data.length,
  itemBuilder: (BuildContext context, int index) {
    return _buildListItemWithAnimation(index);
  },
)

2. 아이템에 애니메이션 적용하기

ListView의 각 아이템에 애니메이션을 적용하려면 AnimatedBuilder나 플러터의 Animation 클래스를 사용할 수 있습니다. 예를 들어, FadeIn 애니메이션을 적용하려면 다음과 같이 코드를 작성할 수 있습니다.

Widget _buildListItemWithAnimation(int index) {
  final animation = Tween(begin: 0.0, end: 1.0).animate(
    CurvedAnimation(
      parent: _controller,
      curve: Interval((1 / _data.length) * index, 1.0, curve: Curves.fastOutSlowIn),
    ),
  );
  _controller.forward();
  return FadeTransition(
    opacity: animation,
    child: ListTile(
      title: Text(_data[index]),
    ),
  );
}

위 코드에서는 각 아이템에 FadeIn 애니메이션을 적용하고, ListView.builder를 통해 애니메이션 효과가 적용된 아이템을 반환합니다.

3. 애니메이션 컨트롤하기

애니메이션을 컨트롤하기 위해 AnimationController를 사용하여 시작, 중지 및 재시작을 관리할 수 있습니다.

AnimationController _controller;

@override
void initState() {
  super.initState();
  _controller = AnimationController(
    vsync: this,
    duration: Duration(milliseconds: 500),
  );
}

위 코드에서 AnimationController를 초기화하고, initState() 메서드에서 AnimationController를 초기화하여 애니메이션을 시작하도록 설정합니다.

이제 ListView의 각 아이템에 애니메이션 효과를 쉽게 추가할 수 있습니다. 사용자들이 스크롤할 때마다 아이템이 부드럽게 나타나는 효과를 경험할 수 있게 되어 앱의 사용자 경험을 향상시킬 수 있습니다.

많은 아이템이 있는 리스트를 표시할 때 ListView의 애니메이션 효과는 사용자들에게 더 흥미로운 화면을 제공하는 데 도움이 될 것입니다.

참고 자료