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

anchor_scroll_controller のカバー
パッケージ詳細v0.4.4

anchor_scroll_controller

このパッケージは、アンカーをサポートする ScrollController を実装しています。つまり、AnchorScrollController はインデックスへのスクロールと、ユーザーによるスクロール中にインデックスの変更をリスンすることをサポートしています。

AndroidiOSWebmacOSWindowsLinux
30日間ダウンロード
5350
いいね数
48
Pub ポイント
160

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

flutter pub add anchor_scroll_controller

パッケージ概要

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

anchor_scroll_controller パッケージは、アンカー機能をサポートする ScrollController を提供し、特定のインデックスへの正確なスクロールと、ユーザー主導のスクロール中にインデックス変更をリスニングすることを可能にします。開発者がスクロール可能なリスト内の現在表示されているアイテムを追跡・応答できるようにすることで、スクロール操作のインタラクションを強化し、ナビゲーションメニュー、無限リスト、同期UI要素などのシナリオに最適です。クロスプラットフォーム対応で、Android、iOS、Web、macOS、Windows、Linux でスムーズに動作します。

用途

  • 特定のリスト項目にスクロールする
  • ユーザーのスクロール中に表示インデックスを追跡する
  • UI 要素とのスクロール位置の同期
  • スクロール認識を活用したナビゲーションメニューの構築
  • アンカー追跡付きの無限スクロールの実装

主な機能

  • インデックスへのスクロールをサポート
  • スクロール中のインデックス変更をリッスンします
  • クロスプラットフォーム互換性
  • ListView または Scrollable ウィジェットとの簡単な統合
  • スムーズなアンカー基準スクロールを提供

適している対象

  • スクロール対応UIを構築する開発者
  • 正確なスクロール位置が必要なアプリ
  • スクロール状態に連動するナビゲーションシステム
  • 無限または動的リストの実装

注意事項

  • アンカー論理の手動処理が必要です
  • 追加の状態管理が必要になる場合があります
  • 単純な静的スクロールには適していません
  • 非常に大きなリストによるパフォーマンスへの影響
  • インデックス付きスクロール可能なコンテンツに限定

元の README

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

flutter anchor_scroll_controller

This package implement a ScrollController which supports anchor. That is, AnchorScrollController supports to scroll to index and listen to index changed while scrolling by user.

Pub

Features

  • Scroll to index

    Screenshot

  • Listen to index changed

    Screenshot

Getting Started

In the pubspec.yaml of your flutter project, add the following dependency:

dependencies:
  ...
  anchor_scroll_controller: <latest_version>

In your library add the following import:

import 'package:anchor_scroll_controller/anchor_scroll_controller.dart';

Initialize an AnchorScrollController object and use it as the ScrollController of ListView, and wrap the items in the ListView with AnchorItemWrapper

late final AnchorScrollController _scrollController;

@override
void initState() {
  super.initState();

  _scrollController = AnchorScrollController(
    onIndexChanged: (index) {
      _tabController?.animateTo(index);
    },
  );
}

@override
Widget build(BuildContext context) {
  return Scaffold(
    appBar: AppBar(
      title: Text("GeneralScrollViewWidget"),
    ),
    body: Column(
      children: [
        Expanded(
          child: ListView.builder(
            controller: _scrollController,
            itemCount: length,
            itemBuilder: (context, index) => AnchorItemWrapper(
              index: index,
              controller: _scrollController,
              child: Container(
                height: 50.0 + Random().nextInt(50),
                color: Colors.primaries[index % Colors.primaries.length],
                alignment: Alignment.center,
                child: Text(index.toString(),
                            style: const TextStyle(fontSize: 24, color: Colors.black)),
              ),
            )
          ),
        ),
        ... // omit more code
      ],
    )
  );
  
  ...
  // call AnchorScrollController.scrollToIndex() to scroll to the target index item
  _scrollController.scrollToIndex(index);
  ...

Additional notes

  • If the size of items are fixed, there is no need to wrap item with AnchorItemWrapper. Just set the fixedItemSize param of AnchorScrollController to the size of items. For example, if the height of all items are 50, then set fixedItemSize param to 50.
  • For the ScrollView which needs to support pin, wrap pinned headers with AnchorItemWrapper. See pin_scroll_view.dart for more detail.
  • If you already have a ScrollController and want to use it, wrap the ListView with AnchorScrollViewWrapper and wrap its items with AnchorItemWrapper. Meanwhile, set the scrollViewWrapper param instead of controller param to AnchorItemWrapper. See cascaded_scroll_controller.dart for more detail.

カテゴリー

ソースリポジトリ

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

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