[flutter] photo_view 패키지로 이미지 픽셀 이동 효과 주기

이미지 뷰어를 개발할 때, 사용자가 이미지를 픽셀 단위로 이동할 수 있는 효과를 주고 싶을 때가 있습니다. flutter에서 photo_view 패키지는 이러한 요구 사항을 간편하게 구현할 수 있는 도구입니다. 이번 글에서는 photo_view 패키지를 사용하여 이미지 픽셀 이동 효과를 주는 방법을 알아보겠습니다.

photo_view 패키지 설치하기

먼저, pubspec.yaml 파일에 photo_view 패키지를 추가해야 합니다. 아래와 같이 dependencies 섹션에 추가해주세요.

dependencies:
  photo_view: ^0.10.3

패키지를 추가한 후, 패키지를 가져와야 합니다. 프로젝트 루트에서 다음 명령어를 실행합니다.

flutter pub get

이제 photo_view 패키지를 사용할 준비가 되었습니다.

photo_view로 이미지 픽셀 이동 효과 주기

photo_view 패키지로 이미지 픽셀 이동 효과를 주려면 ImageProvider를 사용하여 이미지를 가져와야 합니다. 예를 들어, 네트워크 이미지를 사용하려면 NetworkImageProvider를 사용합니다.

class MyImageViewer extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Image Viewer'),
      ),
      body: Center(
        child: PhotoView(
          imageProvider: NetworkImageProvider('https://example.com/image.jpg'),
          minScale: PhotoViewComputedScale.contained * 0.8,
          maxScale: PhotoViewComputedScale.contained * 2.0,
          backgroundDecoration: BoxDecoration(
            color: Colors.black,
          ),
          loadingBuilder: (context, event) => Center(
            child: CircularProgressIndicator(),
          ),
        ),
      ),
    );
  }
}

위의 코드에서 imageProvider를 설정하는 부분에서 NetworkImageProvider를 사용하여 원하는 이미지를 가져올 수 있습니다. 이외에도 다른 ImageProvider를 사용할 수도 있습니다.

또한, minScale과 maxScale을 설정하여 이미지 확대/축소 비율을 제한할 수 있습니다. backgroundDecoration을 사용하여 배경 색상을 지정할 수도 있습니다.

마지막으로, loadingBuilder를 사용하여 이미지 로딩 중에 표시할 위젯을 지정할 수도 있습니다. 위의 예제에서는 CircularProgressIndicator를 사용하여 로딩 중임을 표시하였습니다.

결론

photo_view 패키지를 사용하면 간편하게 이미지 픽셀 이동 효과를 구현할 수 있습니다. ImageProvider를 사용하여 원하는 이미지를 가져오고, minScale과 maxScale을 설정하여 이미지 확대/축소를 제한할 수 있습니다. 또한, backgroundDecoration과 loadingBuilder를 사용하여 배경과 로딩 상태를 커스터마이징할 수도 있습니다.

공식 문서: photo_view 패키지