패키지, 저장소 및 앱 카테고리 검색

swipe_image_gallery 표지
패키지 상세v0.11.0

swipe_image_gallery

스크롤 가능하고 스와이프로 닫을 수 있으며 줌 기능이 있는 갤러리이며, 동적 오버레이를 추가할 수 있습니다.

AndroidiOSWebmacOSWindowsLinux
30일 다운로드
1.1만
좋아요
101
Pub 점수
160

패키지 설치

flutter pub add swipe_image_gallery

패키지 개요

공개 정보를 바탕으로 생성한 선택 가이드입니다.

Swipe Image Gallery는 스와이프로 닫기, 줌 기능, 동적 오버레이 기능을 갖춘 상호작용형 이미지 갤러리를 생성할 수 있는 Flutter 패키지입니다. Android, iOS, Web, macOS, Windows, Linux 등 여러 플랫폼을 지원합니다. 갤러리는 사용자가 이미지를 스크롤하고 스와이프로 닫으며, 자세한 보기 위해 확대/축소할 수 있도록 해줍니다. 개발자는 텍스트나 아이콘과 같은 동적 오버레이를 사용해 갤러리를 맞춤화할 수 있습니다. 사진 공유 앱, 제품 전시, 또는 직관적인 이미지 탐색이 필요한 앱에 적합합니다.

사용 사례

  • 사진 공유 앱
  • 제품 이미지 뷰어
  • 인터랙티브 스토리텔링
  • 이미지 검토 워크플로우
  • 디지털 앨범 표시

주요 기능

  • 스와이프하여 닫기 기능
  • 확대 가능한 이미지
  • 동적 오버레이 지원
  • 크로스 플랫폼 호환성
  • 사용자 정의 가능한 제스처 컨트롤
  • 부드러운 스크롤 경험

적합한 대상

  • 모바일 및 웹 이미지 갤러리
  • 인터랙티브 이미지 제거가 필요한 앱
  • 사용자 정의 가능한 이미지 UI를 찾는 개발자
  • 줌 및 스와이프 제스처가 필요한 프로젝트
  • 사용자 경험 중심의 시각적 애플리케이션

고려 사항

  • 대규모 이미지 세트에 대한 성능 최적화가 필요할 수 있습니다
  • 오버레이 위치 지정은 신중한 레이아웃 관리가 필요할 수 있습니다
  • 다른 위젯과 제스처 충돌 가능
  • 제한된 내장 애니메이션 사용자 정의
  • 갤러리당 이미지 수가 보통일 때 가장 적합

원본 README

연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.

Swipe Image Gallery

Pub Version

A scrollable, dismissable by swiping, zoomable gallery on which you can add a dynamic overlay. While it is intended for an image gallery different types of widgets can also be used.

Installation

Add swipe_image_gallery as a dependency in your pubspec.yaml file.

Usage

With a List of Image Widgets
final assets = const [
  Image(image: AssetImage('assets/1.jpeg')),
  Image(image: AssetImage('assets/2.jpeg')),
  Image(image: AssetImage('assets/3.jpeg')),
  Image(image: AssetImage('assets/4.jpeg')),
];

...

SwipeImageGallery(
  context: context,
  children: assets,
).show();

Image Widgets

With a List of Widgets
final widgets = [
  Container(
    color: Colors.white,
    child: Center(
      child: Text('First Page', style: TextStyle(fontSize: 24.0)),
    ),
  ),
  Container(
    color: Colors.grey,
    child: Center(
      child: Text('Second Page', style: TextStyle(fontSize: 24.0)),
    ),
  ),
];

...

SwipeImageGallery(
  context: context,
  children: widgets,
).show();

Widgets

Using Builder
final urls = [
  'https://via.placeholder.com/400',
  'https://via.placeholder.com/800',
  'https://via.placeholder.com/900x350',
  'https://via.placeholder.com/1000',
  'https://via.placeholder.com/100',
];

...

SwipeImageGallery(
  context: context,
  itemBuilder: (context, index) {
    return Image.network(urls[index]);
  },
  itemCount: urls.length,
).show();

Add an Overlay

You can find the OverlayExample widget here.

  StreamController<Widget> overlayController =
      StreamController<Widget>.broadcast();

  @override
  void dispose() {
    overlayController.close();
    super.dispose();
  }

  ...

  SwipeImageGallery(
    context: context,
    children: remoteImages,
    onSwipe: (index) {
      overlayController.add(OverlayExample(
        title: '${index + 1}/${remoteImages.length}',
      ));
    },
    overlayController: overlayController,
    initialOverlay: OverlayExample(
      title: '1/${remoteImages.length}',
    ),
  ).show();

overlay

Hero Animation
final heroProperties = [
  ImageGalleryHeroProperties(tag: 'imageId1'),
  ImageGalleryHeroProperties(tag: 'imageId2'),
];

final assets = const [
  Image(image: AssetImage('assets/1.jpeg')),
  Image(image: AssetImage('assets/2.jpeg')),
];

...

Row(
  children: [
    Expanded(
      child: InkWell(
        onTap: () => SwipeImageGallery(
          context: context,
          children: assets,
          heroProperties: heroProperties,
        ).show(),
        child: Hero(
          tag: 'imageId1',
          child: Image(
            image: AssetImage('assets/1.jpeg'),
          ),
        ),
      ),
    ),
    Expanded(
      child: InkWell(
        onTap: () => SwipeImageGallery(
          context: context,
          children: assets,
          initialIndex: 1,
          heroProperties: heroProperties,
        ).show(),
        child: Hero(
          tag: 'imageId2',
          child: Image(
            image: AssetImage('assets/2.jpeg'),
          ),
        ),
      ),
    ),
  ],
),

hero

For more detailed examples you can check out the example project.

카테고리

소스 저장소

이 패키지를 사용하는 프로젝트

아직 데이터가 없습니다.