[flutter] 플러터 GridView에서 아이템에 애니메이션 효과를 적용하는 방법은?
Flutter에서 GridView를 사용하여 그리드 레이아웃을 생성하는 것은 매우 간단합니다. GridView.builder 또는 GridView.count와 같은 위젯을 사용하여 아이템 목록을 렌더링할 수 있습니다. 하지만 이러한 아이템에 애니메이션 효과를 적용하는 것은 조금 더 복잡할 수 있습니다.
아이템에 애니메이션 효과 적용하는 방법
1. AnimatedContainer 사용
AnimatedContainer를 이용하면 속성을 변경할 때 자동으로 애니메이션 효과가 적용됩니다. 아래의 예시 코드는 GridView 아이템에 애니메이션 효과를 적용하는 방법을 보여줍니다.
GridView.builder(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
),
itemCount: items.length,
itemBuilder: (BuildContext context, int index) {
return AnimatedContainer(
duration: Duration(milliseconds: 500),
color: Colors.blue,
child: ListTile(
title: Text('Item $index'),
),
);
},
)
위의 예제에서는 AnimatedContainer를 사용하여 GridView의 각 아이템에 색상 변경 애니메이션 효과를 적용했습니다.
2. Hero 애니메이션 사용
Hero 애니메이션을 사용하면 두 화면 사이의 이미지나 위젯의 애니메이션을 부드럽게 전환할 수 있습니다. 여러 개의 아이템이 있는 경우에도 각 아이템 간 전환 효과를 쉽게 추가할 수 있습니다.
GridView.builder(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
),
itemCount: items.length,
itemBuilder: (BuildContext context, int index) {
return GestureDetector(
child: Hero(
tag: 'item$index',
child: Card(
child: Image.network(items[index]),
),
),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) {
return DetailScreen(imageUrl: items[index]);
}),
);
},
);
},
)
위의 예제에서는 Hero 애니메이션을 사용하여 GridView의 각 아이템을 클릭했을 때 다른 화면으로 전환되면서 전환 애니메이션 효과가 적용됩니다.
결론
GridView에서 아이템에 애니메이션 효과를 적용하는 여러 가지 방법이 있습니다. AnimatedContainer 및 Hero 애니메이션을 사용하여 아이템에 애니메이션을 추가할 수 있으며, 원하는 효과에 따라 적절한 방법을 선택할 수 있습니다.