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

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 개

소스 저장소

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

아직 데이터가 없습니다.