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

overlapping_panels 표지
패키지 상세v0.0.3

overlapping_panels

디스코드 모바일 앱 탐색에서 영감을 받았습니다. 제스처로 패널을 표시하고, 패널이 표시될 때 콜백을 수신할 수 있는 왼쪽 및 오른쪽 패널을 앱에 추가하세요.

AndroidiOSWebmacOSWindowsLinux
30일 다운로드
27
좋아요
56
Pub 점수
150

패키지 설치

flutter pub add overlapping_panels

패키지 개요

공개 정보를 바탕으로 생성한 선택 가이드입니다.

OverlappingPanels는 Discord 모바일 인터페이스를 영감으로 한 왼쪽 및 오른쪽 탐색 패널을 구현할 수 있도록 해주는 Flutter 패키지입니다. 손가락 제스처 기반의 패널 노출 애니메이션을 지원하며, 패널 상태 변경을 모니터링하기 위한 콜백도 제공합니다. Android, iOS, Web, macOS, Windows, Linux 등 다양한 플랫폼에서 직관적이고 스와이프 가능한 사이드 네비게이션과 부드러운 전환을 필요로 하는 앱에 적합합니다.

사용 사례

  • 모바일 앱 탐색
  • 채팅 앱 인터페이스
  • 스와이프 가능한 사이드 메뉴
  • 다중 패널 레이아웃
  • 제스처 기반 사용자 인터페이스

주요 기능

  • 제스처로 트리거된 패널이 나타남
  • 패널 상태에 대한 콜백 지원
  • 좌우 패널 지원
  • 크로스 플랫폼 호환성
  • 부드러운 애니메이션 전환
  • 디스코드를 영감으로 한 디자인

적합한 대상

  • 채팅 앱을 개발하는 개발자
  • 현대적인 탐색을 찾는 UI 디자이너
  • 스와이프 가능한 사이드 패널이 필요한 앱
  • 크로스 플랫폼 플러터 프로젝트
  • 인터랙티브 모바일 인터페이스

고려 사항

  • 독특한 디자인을 위해 맞춤 스타일링이 필요할 수 있습니다
  • 성능은 패널 콘텐츠의 복잡성에 따라 달라집니다
  • 두 개의 패널(좌/우)로 제한
  • 복잡한 중첩 탐색에 적합하지 않습니다
  • 중첩된 터치 이벤트를 신중하게 처리해야 합니다

원본 README

연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.

Overlapping Panels Pub

Add Discord-like navigation to your app. Demo project here: overlapping_panels_demo

Demo
TODO

This widget does not support navigation events yet. So pressing the back button, does not slide the main panel back into view. This feature will be implemented in the nearest future.

Usage

Simple and straight to the point. Just provide usual widgets for all panels:

class _MyHomePageState extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return Stack(
      children: [
        OverlappingPanels(
          // Using the Builder widget is not required. You can pass your widget directly. 
          // But to use `OverlappingPanels.of(context)` you need to wrap your widget in a Builder
          left: Builder(builder: (context) {
            return const LeftPage();
          }),
          right: Builder(
            builder: (context) => const RightPage(),
          ),
          main: Builder(
            builder: (context) {
              return const MainPage();
            },
          ),
          onSideChange: (side) {
            setState(() {
              if (side == RevealSide.main) {
                // hide something
              } else if (side == RevealSide.left) {
                // show something
              }
            });
          },
        ),
      ],
    );
  }
}

To be able to reveal a panel with the tap of a button, for example, do:

IconButton(
  icon: const Icon(Icons.menu),
  onPressed: () {
    // This is the main point
    OverlappingPanels.of(context)?.reveal(RevealSide.left);
  },
)

카테고리

소스 저장소

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