パッケージ、リポジトリ、アプリカテゴリを検索

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.

カテゴリー

ソースリポジトリ

このパッケージを使用しているプロジェクト

データはまだありません。