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

overlapping_panels のカバー
パッケージ詳細v0.0.3

overlapping_panels

Discordのモバイルアプリのナビゲーションにインスパイアされました。ジェスチャーでパネルを表示できる左右のパネルをアプリに追加し、パネルが表示されたときにコールバックをリッスンできます。

AndroidiOSWebmacOSWindowsLinux
30日間ダウンロード
27
いいね数
56
Pub ポイント
150

パッケージをインストール

flutter pub add overlapping_panels

パッケージ概要

公開情報に基づく選定ガイドです。参考としてご利用ください。

OverlappingPanels は、Discord のモバイルインターフェースを参考にした左側および右側のナビゲーションパネルを実装できる Flutter パッケージです。ジェスチャーに基づくパネル表示アニメーションをサポートし、パネルの状態変化を監視するコールバックを提供します。Android、iOS、Web、macOS、Windows、Linux など複数のプラットフォームで、直感的でスワイプ可能なサイドナビゲーションと滑らかな遷移を必要とするアプリに最適です。

用途

  • モバイルアプリナビゲーション
  • チャットアプリのインターフェース
  • スワイプ可能なサイドメニュー
  • マルチパネルレイアウト
  • ジェスチャー駆動型UI

主な機能

  • ジェスチャーでトリガーされたパネルが表示される
  • パネル状態のコールバックサポート
  • 左側および右側パネルのサポート
  • クロスプラットフォーム互換性
  • スムーズなアニメーションの遷移
  • Discordを意識したデザイン

適している対象

  • チャットアプリを開発する開発者
  • 現代のナビゲーションを求めるUIデザイナー
  • スワイプ可能なサイドパネルが必要なアプリ
  • クロスプラットフォーム対応のFlutterプロジェクト
  • インタラクティブなモバイルインターフェース

注意事項

  • 独自のデザインにはカスタムスタイルが必要になる場合があります
  • パネルコンテンツの複雑さに応じてパフォーマンスが変化します
  • 2つのパネル(左/右)に制限
  • 複雑なネストされたナビゲーションには適していません
  • 重複するタッチイベントの取り扱いに注意が必要です

元の README

関連するソースリポジトリの README 原文のスナップショットです。最新の内容はリポジトリをご覧ください。

Overlapping Panels Pub

Add Discord-like navigation to your app. Demo project here: overlapping_panels_demo

Demo
TODO

This widget does not support navigation events yet. So pressing the back button, does not slide the main panel back into view. This feature will be implemented in the nearest future.

Usage

Simple and straight to the point. Just provide usual widgets for all panels:

class _MyHomePageState extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return Stack(
      children: [
        OverlappingPanels(
          // Using the Builder widget is not required. You can pass your widget directly. 
          // But to use `OverlappingPanels.of(context)` you need to wrap your widget in a Builder
          left: Builder(builder: (context) {
            return const LeftPage();
          }),
          right: Builder(
            builder: (context) => const RightPage(),
          ),
          main: Builder(
            builder: (context) {
              return const MainPage();
            },
          ),
          onSideChange: (side) {
            setState(() {
              if (side == RevealSide.main) {
                // hide something
              } else if (side == RevealSide.left) {
                // show something
              }
            });
          },
        ),
      ],
    );
  }
}

To be able to reveal a panel with the tap of a button, for example, do:

IconButton(
  icon: const Icon(Icons.menu),
  onPressed: () {
    // This is the main point
    OverlappingPanels.of(context)?.reveal(RevealSide.left);
  },
)

カテゴリー

ソースリポジトリ

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