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

draggable_scrollbar のカバー
パッケージ詳細v0.1.0

draggable_scrollbar

垂直リスト内の迅速なナビゲーションのためにドラッグ可能なスクロールバーです。追加オプションとして、現在のアイテムに関する情報を持つラベルをスクロールサムの隣に表示できます。

AndroidiOSWebmacOSWindowsLinux
30日間ダウンロード
8120
いいね数
404
Pub ポイント
140

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

flutter pub add draggable_scrollbar

パッケージ概要

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

draggable_scrollbar パッケージは、現在表示されているアイテムに関する情報を表示するオプションのラベルを備えたドラッグ可能なスクロールバーを提供することで、Flutterにおける垂直リストナビゲーションを強化します。ユーザーはスクロールバーのトグルをドラッグして長いリストを素早くスクロールでき、使いやすさとアクセシビリティが向上します。ラベルは現在の位置を反映するために動的に更新され、視覚的なフィードバックを提供します。ListView およびその他のスクロール可能なウィジェットとのスムーズな統合を目的としており、Android、iOS、Web、macOS、Windows、Linux を含むすべての主要プラットフォームをサポートしています。

用途

  • 長いリスト内の素早いナビゲーション
  • スクロール可能なコンテンツのアクセシビリティの向上
  • データが多く含まれるアプリにおけるユーザーエクスペリエンスの向上
  • スクロール中に視覚フィードバックを提供する
  • 垂直リスト内のスクロール動作のカスタマイズ

主な機能

  • ドラッグ可能なスクロールバーのつまみ
  • 現在のアイテム情報を表示する動的ラベル
  • クロスプラットフォーム対応
  • ListView との簡単な統合
  • カスタマイズ可能な外観
  • スムーズなスクロールインタラクション

適している対象

  • 長い垂直リストを持つアプリ
  • アクセシビリティを重視したアプリケーション
  • データ集約型ダッシュボード
  • 直感的なスクロールを必要とするユーザーインターフェース
  • 強化されたスクロールUXを求める開発者

注意事項

  • 最適な外観を得るには、追加のスタイル設定が必要になる場合があります
  • 小さな画面ではラベルの配置を調整する必要がある場合があります
  • 非常に大きなリストへのパフォーマンスの影響
  • 垂直スクロールのみに制限
  • ラベルテキストのレンダリングには適切なコンテキストが必要です

元の README

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

Flutter Community: draggable_scrollbar

Draggable Scrollbar

Pub

A scrollbar that can be dragged for quickly navigation through a vertical list. Additionaly it can show label next to scrollthumb with information about current item, for example date of picture created

Usage

You can use one of the three built-in scroll thumbs, or you can create a custom thumb for your own app!

You can play with all of these examples by running the app found in the example folder.

Example

Semicircle Thumb
DraggableScrollbar.semicircle(
  controller: myScrollController,
  child: GridView.builder(
    gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
      crossAxisCount: 5,
    ),
    controller: myScrollController,
    padding: EdgeInsets.zero,
    itemCount: 1000,
    itemBuilder: (context, index) {
      return Container(
        alignment: Alignment.center,
        margin: EdgeInsets.all(2.0),
        color: Colors.grey[300],
      );
    },
  ),
);
Arrows thumb + label
DraggableScrollbar.arrows(
  labelTextBuilder: (double offset) => Text("${offset ~/ 100}"),
  controller: myScrollController,
  child: ListView.builder(
    controller: myScrollController,
    itemCount: 1000,
    itemExtent: 100.0,
    itemBuilder: (context, index) {
      return Container(
        padding: EdgeInsets.all(8.0),
        child: Material(
          elevation: 4.0,
          borderRadius: BorderRadius.circular(4.0),
          color: Colors.purple[index % 9 * 100],
          child: Center(
            child: Text(index.toString()),
          ),
        ),
      );
    },
  ),
);
Rounded Rectangle Thumb
DraggableScrollbar.rrect(
  controller: myScrollController,
  child: ListView.builder(
    controller: myScrollController,
    itemCount: 1000,
    itemExtent: 100.0,
    itemBuilder: (context, index) {
      return Container(
        padding: EdgeInsets.all(8.0),
        child: Material(
          elevation: 4.0,
          borderRadius: BorderRadius.circular(4.0),
          color: Colors.green[index % 9 * 100],
          child: Center(
            child: Text(index.toString()),
          ),
        ),
      );
    },
  ),
);
Custom
DraggableScrollbar(
  controller: myScrollController,
  child: ListView.builder(
    controller: myScrollController,
    itemCount: 1000,
    itemExtent: 100.0,
    itemBuilder: (context, index) {
      return Container(
        padding: EdgeInsets.all(8.0),
        child: Material(
          elevation: 4.0,
          borderRadius: BorderRadius.circular(4.0),
          color: Colors.cyan[index % 9 * 100],
          child: Center(
            child: Text(index.toString()),
          ),
        ),
      );
    },
  ),
  heightScrollThumb: 48.0,
  backgroundColor: Colors.blue,
  scrollThumbBuilder: (
    Color backgroundColor,
    Animation<double> thumbAnimation,
    Animation<double> labelAnimation,
    double height, {
    Text labelText,
  }) {
    return FadeTransition(
      opacity: thumbAnimation,
      child: Container(
        height: height,
        width: 20.0,
        color: backgroundColor,
      ),
    );
  },
);

カテゴリー

ソースリポジトリ

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