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

scroll_navigation のカバー
パッケージ詳細v1.3.2

scroll_navigation

ジェスチャーとタップによる強力なナビゲーションです。左から右にスクロールするか、ナビゲーションアイコンをタップできます。

AndroidiOSmacOSWindowsLinux
30日間ダウンロード
199
いいね数
120
Pub ポイント
140

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

flutter pub add scroll_navigation

パッケージ概要

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

ScrollNavigation は、水平スクロールとタップジェスチャーによる直感的なナビゲーションを可能にするFlutterパッケージです。タブベースのインターフェース向けに設計されており、ユーザーが左右にスワイプするか、ナビゲーションアイコンをタップすることでタブ間を移動できます。滑らかなトランジションと応答性の高いフィードバックにより、複数のプラットフォームでユーザー体験を向上させます。流れるようなジェスチャー駆動型ナビゲーションを必要とするアプリに最適で、Android、iOS、macOS、Windows、Linuxをサポートしています。軽量な設計により、既存のFlutterプロジェクトにすばやく統合可能です。

用途

  • ジェスチャーによるタブナビゲーション
  • ダッシュボードでの水平スワイプナビゲーション
  • モバイルおよびデスクトップアプリのナビゲーション
  • タブレイアウトを備えたインタラクティブUI
  • 従来の下部ナビゲーションバーの交換

主な機能

  • 水平スクロールナビゲーション
  • タップしてナビゲーションするアイコン
  • クロスプラットフォーム対応
  • スムーズなアニメーション
  • カスタマイズ可能なナビゲーションインジケーター
  • レスポンシブなジェスチャー検出

適している対象

  • ジェスチャー豊富なFlutterアプリを開発する開発者
  • 現代的なナビゲーションパターンを探しているデザイナー
  • 複数のタブセクションを持つアプリ
  • モバイルおよびデスクトップの両方をターゲットにしたプロジェクト
  • 軽量なナビゲーションソリューションを求めるチーム

注意事項

  • 複雑なデザインにはカスタムスタイルが必要になる場合があります
  • 水平ナビゲーションのみに制限
  • 多数のタブを使用するとパフォーマンスに影響が出る可能性があります
  • 垂直ナビゲーションのニーズには適していません
  • 小さな画面ではタッチイベントの取り扱いに注意が必要です

元の README

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

scroll_navigation

My other APIs


Features

  • Fancy animations.
  • Customizable colors.
  • Works with the back button.
  • Scrolling pages by gestures.
  • Indicator that follows the scroll.
  • Easy and powerful implementation! :)
  • Page movement when tapping an icon.



Scroll Navigation Details

NavigationPosition.bottom NavigationPosition.top

Code
@override
Widget build(BuildContext context) {
  return ScrollNavigation(
    bodyStyle: NavigationBodyStyle(
      background: Colors.white,
      borderRadius: BorderRadius.vertical(bottom: Radius.circular(20)),
    ),
    barStyle: NavigationBarStyle(
      background: Colors.white,
      elevation: 0.0,
    ),
    pages: [
      Container(color: Colors.blue[100]),
      Container(color: Colors.green[100]),
      Container(color: Colors.purple[100]),
      Container(color: Colors.amber[100]),
      Container(color: Colors.deepOrange[100])
    ],
    items: const [
      ScrollNavigationItem(icon: Icon(Icons.camera)),
      ScrollNavigationItem(icon: Icon(Icons.chat)),
      ScrollNavigationItem(icon: Icon(Icons.favorite)),
      ScrollNavigationItem(icon: Icon(Icons.notifications)),
      ScrollNavigationItem(icon: Icon(Icons.home))
    ],
  );
}



NavigationPosition.left NavigationPosition.right

Code
@override
Widget build(BuildContext context) {
  return ScrollNavigation(
    bodyStyle: NavigationBodyStyle(
      background: Colors.white,
      borderRadius: BorderRadius.horizontal(left: Radius.circular(20)),
      scrollDirection: Axis.vertical,
    ),
    barStyle: NavigationBarStyle(
      position: NavigationPosition.left,
      elevation: 0.0,
      background: Colors.white,
    ),
    pages: [
      Container(color: Colors.blue[100]),
      Container(color: Colors.green[100]),
      Container(color: Colors.purple[100]),
      Container(color: Colors.amber[100]),
      Container(color: Colors.deepOrange[100])
    ],
    items: const [
      ScrollNavigationItem(icon: Icon(Icons.camera)),
      ScrollNavigationItem(icon: Icon(Icons.chat)),
      ScrollNavigationItem(icon: Icon(Icons.favorite)),
      ScrollNavigationItem(icon: Icon(Icons.notifications)),
      ScrollNavigationItem(icon: Icon(Icons.home))
    ],
  );
}


Go to a Page Code
final navigationKey = GlobalKey<ScrollNavigationState>();

@override
Widget build(BuildContext context) {
  return ScrollNavigation(
    key: navigationKey,
    pages: [...],
    items: [...],
    barStyle: NavigationBarStyle(position: NavigationPosition.top),
  );
}

void goToPage(int index) => navigationKey.currentState.goToPage(index);






Identifier Details

physics = true physics = False



position = IdentifierPosition.topAndRight showIdentifier = False

Code
return ScrollNavigation(
    pages: [...],
    items: [...],
    physics: true,
    showIdentifier: true,
    identiferStyle: NavigationIdentiferStyle(
      position: NavigationPosition.top,
    ),
);






Title Scroll Navigation Details


Code
return TitleScrollNavigation(
    barStyle: TitleNavigationBarStyle(
      style: TextStyle(fontWeight: FontWeight.bold),
      padding: EdgeInsets.symmetric(horizontal: 40.0),
      spaceBetween: 40,
    ),
    titles: [
      "Main Page",
      "Personal Information",
      "Personalization",
      "Security",
      "Payment Methods",
    ],
    pages: [
      Container(color: Colors.blue[50]),
      Container(color: Colors.red[50]),
      Container(color: Colors.green[50]),
      Container(color: Colors.purple[50]),
      Container(color: Colors.yellow[50]),
    ],
);






Screen Details (Hide AppBar on scroll)


Code
ScrollController controller = ScrollController();

return Screen(
    appBar: AppBarTitle(title: "Title Scroll", showBack: true), //WIDGET IN THE EXAMPLE
    controllerToHideAppBar: controller,
    body: ListView.builder(
      itemCount: 15,
      padding: EdgeInsets.zero,
      controller: controller,
      itemBuilder: (_, __) {
        return Padding(
          padding: EdgeInsets.symmetric(vertical: 5),
          child: Container(
            height: 50,
            color: Colors.blue[50],
          ),
        );
      },
    ),
  );

カテゴリー

依存関係

依存関係一覧 1 件

ソースリポジトリ

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

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