[flutter] photo_view 패키지로 이미지 확대/축소 애니메이션 효과 주기

이미지를 확대 및 축소하는 애니메이션 효과를 주는 것은 사용자 경험을 향상시키기 위해 중요한 부분입니다. Flutter에서 이러한 효과를 구현하기 위해 photo_view 패키지를 사용할 수 있습니다. photo_view 패키지는 이미지를 확대/축소하고 드래깅하여 이동하는 기능을 제공합니다.

photo_view 패키지 설치

먼저, photo_view 패키지를 프로젝트에 추가해야 합니다. pubspec.yaml 파일에 다음과 같이 패키지를 추가합니다:

dependencies:
  photo_view: ^0.12.0

그리고 패키지들을 업데이트하려면 터미널에서 다음 명령어를 실행합니다:

flutter packages get

photo_view 사용법

photo_view 패키지를 사용하기 위해서는 다음 세 가지 위젯이 필요합니다:

  1. PhotoView 위젯: 이미지를 확대/축소하고 드래깅하여 이동할 수 있는 화면을 표시합니다.
  2. ImageProvider 객체: 이미지를 가져올 수 있는 URL 또는 파일 경로와 같은 정보를 제공합니다.
  3. Hero 위젯: 이미지 확대/축소 애니메이션을 더 부드럽게 만들어주는 역할을 합니다.

다음은 photo_view 패키지를 사용하여 이미지를 확대/축소하는 예제 코드입니다:

import 'package:flutter/material.dart';
import 'package:photo_view/photo_view.dart';

class ImageViewer extends StatelessWidget {
  final String imageUrl;

  ImageViewer({required this.imageUrl});

  @override
  Widget build(BuildContext context) {
    return Hero(
      tag: imageUrl,
      child: Container(
        child: GestureDetector(
          onTap: () {
            Navigator.of(context).pop();
          },
          child: PhotoView(
            imageProvider: NetworkImage(imageUrl),
            minScale: PhotoViewComputedScale.contained * 0.8,
            maxScale: PhotoViewComputedScale.covered * 2,
          ),
        ),
      ),
    );
  }
}

위의 예제 코드에서 ImageViewer 위젯은 imageUrl을 인자로 받아 해당 이미지를 보여줍니다. PhotoView 위젯은 imageProvider를 통해 이미지를 가져올 수 있으며, minScalemaxScale 속성을 통해 확대/축소 가능한 범위를 지정할 수 있습니다.

또한, Hero 위젯을 사용하여 이미지가 확대/축소될 때 부드럽게 전환되도록 할 수 있습니다. 이전 페이지에서 Hero 위젯을 사용하여 태그를 지정한 뒤, 전환될 페이지에서 동일한 태그를 사용해야 합니다.

결론

photo_view 패키지는 Flutter에서 이미지를 확대/축소하는 애니메이션 효과를 쉽게 구현할 수 있도록 도와줍니다. 이를 통해 사용자에게 좀 더 매끄러운 이미지 확대/축소 경험을 제공할 수 있습니다. 자세한 내용은 공식 문서를 참조하세요.