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

direct_select_flutter 표지
패키지 상세v1.2.0

direct_select_flutter

https://dribbble.com/shots/3876250-DirectSelect-Dropdown-ux 에서 영감을 받은 직접 선택 위젯 구현

AndroidiOSWebmacOSWindowsLinux
30일 다운로드
440
좋아요
321
Pub 점수
160

패키지 설치

flutter pub add direct_select_flutter

패키지 개요

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

Dribbble 디자인에서 영감을 받은 직접 선택 위젯을 구현하는 플러터 패키지로, 직관적이고 시각적으로 매력적인 드롭다운 경험을 제공합니다. 부드럽고 제스처 기반 인터페이스를 통해 사용자가 옵션과 직접 상호작용할 수 있게 하여 모바일 및 웹 플랫폼에서 UX를 향상시킵니다. 커스터마이징이 가능하며 양식과 데이터 입력 흐름에 원활하게 통합됩니다. 현대적인 UI/UX 기준을 충족하도록 설계되었으며, 모든 지원되는 플랫폼에서 명확성과 반응성을 강조합니다.

사용 사례

  • 드롭다운이 있는 폼 입력
  • 모바일 앱에서의 사용자 경험 향상
  • 사용자 정의 가능한 선택 인터페이스
  • 시각적 피드백이 있는 데이터 입력
  • 인터랙티브 웹 및 데스크톱 양식

주요 기능

  • 제스처 기반 선택
  • 부드러운 애니메이션
  • 크로스 플랫폼 호환성
  • 사용자 지정 스타일
  • 반응형 디자인
  • 기존 양식과의 간편한 통합

적합한 대상

  • 현대적인 드롭다운을 찾는 개발자
  • UX 중심 앱 디자이너
  • 모바일 우선 애플리케이션 개발
  • 웹 및 데스크톱 플러터 애플리케이션
  • 직관적인 입력 구성 요소가 필요한 프로젝트

고려 사항

  • 복잡한 테마에 맞추기 위해 추가적인 스타일링이 필요할 수 있습니다
  • 단일 선택 모드로 제한
  • 매우 큰 데이터 세트 사용 시 성능 영향
  • 중첩되거나 계층적인 선택에 적합하지 않음
  • 접근성 기능을 주의 깊게 다뤄야 합니다

원본 README

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

direct-select-flutter

DirectSelect is a selection widget with an ethereal, full-screen modal popup displaying the available choices when the widget is interact with. Inspired by dribble shot.

Made in lanars.com.

pub package Awesome Flutter

iOS

Android

Usage

Create DirectSelectList and fill it with items using itemBuilder

    final dsl = DirectSelectList<String>(
        values: _cities,
        defaultItemIndex: 3,
        itemBuilder: (String value) => getDropDownMenuItem(value),
        focusedItemDecoration: _getDslDecoration(),
        onItemSelectedListener: (item, index, context) {
          Scaffold.of(context).showSnackBar(SnackBar(content: Text(item)));
        });

Create items like this

  DirectSelectItem<String> getDropDownMenuItem(String value) {
    return DirectSelectItem<String>(
        itemHeight: 56,
        value: value,
        itemBuilder: (context, value) {
          return Text(value);
        });
  }

Create decorations for focused items

  _getDslDecoration() {
   return BoxDecoration(
     border: BorderDirectional(
       bottom: BorderSide(width: 1, color: Colors.black12),
       top: BorderSide(width: 1, color: Colors.black12),
     ),
   );
 }

Create DirectSelectContainer and fill it with your data

Scaffold(
      appBar: appBar,
      body: DirectSelectContainer(
        child: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            mainAxisSize: MainAxisSize.min,
            verticalDirection: VerticalDirection.down,
            children: <Widget>[
              SizedBox(height: 150.0),
              Padding(
                padding: const EdgeInsets.all(8.0),
                child: Column(
                  children: <Widget>[
                    Container(
                      alignment: AlignmentDirectional.centerStart,
                      margin: EdgeInsets.only(left: 4),
                      child: Text("City"),
                    ),
                    Padding(
                      padding: const EdgeInsets.fromLTRB(0, 8, 0, 0),
                      child: Card(
                        child: Row(
                          mainAxisSize: MainAxisSize.max,
                          children: <Widget>[
                            Expanded(
                                child: Padding(
                                    child: DirectSelectList<String>(
                                                     values: _cities,
                                                     defaultItemIndex: 3,
                                                     itemBuilder: (String value) => getDropDownMenuItem(value),
                                                     focusedItemDecoration: _getDslDecoration(),
                                                     onItemSelectedListener: (item, index, context) {
                                                       Scaffold.of(context).showSnackBar(SnackBar(content: Text(item)));
                                                     }),
                                    padding: EdgeInsets.only(left: 12))),
                            Padding(
                              padding: EdgeInsets.only(right: 8),
                              child: Icon(
                                Icons.unfold_more,
                                color: Colors.black38,
                              ),
                            )
                          ],
                        ),
                         ),
                    ),
                  ],
                ),
              ),
            ],
          ),
        ),
      ),
    );

카테고리

소스 저장소

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

아직 데이터가 없습니다.