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

draggable_scrollbar 표지
패키지 상세v0.1.0

draggable_scrollbar

수직 목록을 빠르게 탐색하기 위해 드래그할 수 있는 스크롤바입니다. 추가 옵션으로 현재 항목에 대한 정보를 포함하는 레이블을 스크롤섬 근처에 표시할 수 있습니다.

AndroidiOSWebmacOSWindowsLinux
30일 다운로드
8.1천
좋아요
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,
      ),
    );
  },
);

카테고리

소스 저장소

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