문제 발생
영화 앱을 만들고 있는데 포스터를 터치하면 그 이미지를 `Here`위젯을 통해서 화면 전환을 하려 하다 위와 같은 문제가 생겼다.
발생 이유 추측
위에서 빨간 에러를 보면 '같은 tag를 공유하는 여러 개의 `Hero`위젯이 있다'라는 것 같다.
동일한 이미지가 현재 상영중, 인기순 카테고리에 들어있는 것을 보니 이것 때문인 것 같았다.
해결 방법
이미지가 같더라도 tag의 값을 각각 다르게 적용해서 해결
// 현재 상영중 카테고리에서 Detail페이지에 같은 tag를 넘겨줌
final heroTag = '현재 상영중_${movie.id}';
GestureDetector(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => DetailPage(heroTag: heroTag),
),
);
}
child: Hero(
tag: heroTag
)
)
// 인기순 카테고리에서 Detail페이지에 같은 tag를 넘겨줌
final heroTag = '인기순_${movie.id}';
GestureDetector(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => DetailPage(heroTag: heroTag),
),
);
}
child: Hero(
tag: heroTag
)
)
'TIL(Today I Learned)' 카테고리의 다른 글
[TIL-037] Dart 클래스의 멤버변수와 생성자 의미 파악하기 (0) | 2025.06.06 |
---|---|
[TIL-036] 동적으로 높이 가져오기 (0) | 2025.05.19 |
[TIL-034] 영화 앱에서 특히 중요한 이미지 캐싱 문제 (0) | 2025.05.14 |
[TIL-033] Flutter가 권장하는 앱 아키텍처 가이드 (0) | 2025.05.08 |
[TIL-032] Dart, Flutter Class에서 this가 안되는 이유 (0) | 2025.05.07 |