패키지, 저장소 및 앱 카테고리 검색

anchor_scroll_controller 표지
패키지 상세v0.4.4

anchor_scroll_controller

이 패키지는 앵커를 지원하는 ScrollController를 구현합니다. 즉, AnchorScrollController는 인덱스로 스크롤하고 사용자가 스크롤할 때 인덱스 변경을 듣는 것을 지원합니다.

AndroidiOSWebmacOSWindowsLinux
30일 다운로드
5.4천
좋아요
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.

카테고리

소스 저장소

이 패키지를 사용하는 프로젝트

아직 데이터가 없습니다.