Flutter 실용가이드 - 위젯 CheatSheet

요약#

핵심 요지#

  • 문제 정의: Flutter에는 200개 이상의 공식 위젯이 있어 어떤 위젯을 사용해야 할지 찾기 어렵다.
  • 핵심 주장: 카테고리별로 위젯을 시각적으로 정리하면 필요한 위젯을 빠르게 찾을 수 있다.
  • 주요 근거: 공식 Widget Catalog의 이미지와 설명을 기반으로 실제 모습을 미리 확인할 수 있다.
  • 실무 기준: 플랫폼에 따라 Material(Android) 또는 Cupertino(iOS) 위젯을 선택한다.
  • 한계: 모든 위젯의 세부 속성은 공식 API 문서를 참조해야 한다.

문서가 설명하는 범위#

  • Material Design 위젯 시각적 카탈로그
  • Cupertino (iOS) 위젯 시각적 카탈로그
  • 레이아웃, 애니메이션, 입력, 스크롤링 위젯 분류
  • 각 위젯의 용도와 시각적 미리보기

읽는 시간: 30분 | 난이도: 초급


참고 자료#

이 문서의 위젯 이미지는 Flutter 공식 문서에서 가져왔습니다.


이 문서의 목적#

이 문서는 Flutter 개발 중 “어떤 위젯을 사용해야 하지?”라는 질문에 빠르게 답하기 위한 시각적 참조 가이드입니다. 공식 Widget Catalog의 이미지를 카테고리별로 정리하여 원하는 UI를 구현할 위젯을 쉽게 찾을 수 있습니다.

사용 방법
  • 원하는 UI 형태를 이미지로 먼저 찾습니다
  • 위젯 이름을 클릭하면 공식 API 문서로 이동합니다
  • 이미지 아래의 한 줄 설명으로 용도를 파악합니다

Material Design 위젯#

Material Design은 Google이 만든 디자인 시스템으로, Android 앱에서 주로 사용됩니다. Flutter는 Material 3을 기본으로 지원합니다.

App Structure#

미리보기위젯설명
AppBar
AppBar화면 상단에 제목과 액션을 표시하는 컨테이너
BottomAppBar
BottomAppBar화면 하단에 내비게이션과 주요 액션을 표시
-ScaffoldMaterial Design의 기본 레이아웃 구조 제공
MaterialApp
MaterialAppMaterial Design 앱의 최상위 위젯

Buttons#

미리보기위젯설명
Buttons
ButtonsElevatedButton, FilledButton, OutlinedButton, TextButton
ElevatedButton
ElevatedButton눌렀을 때 elevation이 높아지는 채워진 버튼
OutlinedButton
OutlinedButton테두리가 있는 버튼, TextButton에 테두리 추가
FloatingActionButton
FloatingActionButton주요 액션을 위한 원형 플로팅 버튼
ExtendedFAB
ExtendedFAB텍스트가 포함된 확장 플로팅 버튼
IconButton
IconButton아이콘 형태의 클릭 가능한 버튼
SegmentedButton
SegmentedButton여러 옵션 중 하나를 선택하는 분할 버튼

미리보기위젯설명
NavigationBar
NavigationBar앱의 주요 목적지 간 전환을 위한 하단 바
BottomNavigationBar
BottomNavigationBar탭 한 번으로 최상위 뷰를 전환하는 하단 바
NavigationDrawer
NavigationDrawer앱 좌측에서 슬라이드되어 나오는 내비게이션 패널
Drawer
DrawerScaffold에서 사용하는 사이드 패널
NavigationRail
NavigationRail태블릿/데스크톱용 좌측 내비게이션 레일
TabBar
TabBar탭 형식의 내비게이션 바

Input & Selection#

미리보기위젯설명
TextField
TextField텍스트를 입력받는 필드
Checkbox
Checkbox여러 옵션 중 하나 이상을 선택하는 체크박스
Radio
Radio여러 옵션 중 하나만 선택하는 라디오 버튼
Switch
Switchon/off 상태를 전환하는 토글 스위치
Slider
Slider범위 내에서 값을 선택하는 슬라이더
DatePicker
DatePicker날짜를 선택하는 캘린더 인터페이스
TimePicker
TimePicker시간을 선택하는 시계 인터페이스

Feedback & Status#

미리보기위젯설명
AlertDialog
AlertDialog사용자에게 정보를 제공하거나 결정을 요청하는 대화상자
SnackBar
SnackBar화면 하단에 잠깐 표시되는 메시지
BottomSheet
BottomSheet화면 하단에서 올라오는 보조 콘텐츠 패널
CircularProgressIndicator
CircularProgressIndicator원형 로딩 인디케이터
LinearProgressIndicator
LinearProgressIndicator선형 진행 인디케이터
Badge
Badge숫자나 상태를 표시하는 작은 배지
Tooltip
Tooltip요소에 마우스를 올리면 표시되는 설명 텍스트

Data Display#

미리보기위젯설명
Card
Card둥근 모서리와 그림자가 있는 콘텐츠 컨테이너
ListTile
ListTile리스트의 한 행을 나타내는 고정 높이 위젯
DataTable
DataTable행과 열로 데이터를 표시하는 테이블
Chip
Chip작은 정보 블록, 선택이나 필터링에 사용
Divider
Divider콘텐츠를 구분하는 얇은 수평선
Menu
Menu선택 옵션을 표시하는 임시 메뉴
PopupMenuButton
PopupMenuButton클릭하면 팝업 메뉴가 표시되는 버튼
CarouselView
CarouselView가로로 스크롤되는 카드 캐러셀
-Stepper단계별 진행 과정을 표시하는 위젯

Extras#

미리보기위젯설명
GridView
GridView2차원 그리드로 아이템을 배치
ListView
ListView스크롤 가능한 리스트
-RefreshIndicator당겨서 새로고침 기능 래퍼

Cupertino (iOS) 위젯#

Cupertino 위젯은 Apple의 Human Interface Guidelines를 따르는 iOS 스타일 위젯입니다. iOS 앱을 만들 때 네이티브와 동일한 look and feel을 제공합니다.

App Structure#

미리보기위젯설명
CupertinoApp
CupertinoAppCupertino 디자인을 사용하는 앱의 최상위 위젯
-CupertinoPageScaffoldiOS 스타일 기본 페이지 레이아웃 구조
CupertinoNavigationBar
CupertinoNavigationBariOS 스타일 상단 내비게이션 바
CupertinoSliverNavigationBar
CupertinoSliverNavigationBariOS 11 스타일 large title 내비게이션 바
CupertinoTabScaffold
CupertinoTabScaffoldiOS 스타일 탭 기반 앱 구조
CupertinoTabBar
CupertinoTabBariOS 스타일 하단 탭 바

Buttons & Controls#

미리보기위젯설명
CupertinoButton
CupertinoButtoniOS 스타일 버튼
CupertinoSwitch
CupertinoSwitchiOS 스타일 on/off 토글 스위치
CupertinoSlider
CupertinoSlideriOS 스타일 값 슬라이더
CupertinoCheckbox
CupertinoCheckboxmacOS 스타일 체크박스
CupertinoRadio
CupertinoRadiomacOS 스타일 라디오 버튼
CupertinoSlidingSegmentedControl
CupertinoSlidingSegmentedControliOS 13 스타일 세그먼트 컨트롤

Input#

미리보기위젯설명
CupertinoTextField
CupertinoTextFieldiOS 스타일 텍스트 입력 필드
CupertinoSearchTextField
CupertinoSearchTextFieldiOS 스타일 검색 필드
CupertinoTextFormFieldRow
CupertinoTextFormFieldRowCupertinoFormRow 안에 CupertinoTextField를 감싼 폼 필드
CupertinoFormRow
CupertinoFormRowiOS 스타일 폼 행
CupertinoFormSection
CupertinoFormSectioniOS 스타일 폼 섹션

Pickers#

미리보기위젯설명
CupertinoPicker
CupertinoPickeriOS 스타일 휠 피커
CupertinoDatePicker
CupertinoDatePickeriOS 스타일 날짜 피커
CupertinoTimerPicker
CupertinoTimerPickeriOS 스타일 타이머 피커

Dialogs & Sheets#

미리보기위젯설명
CupertinoAlertDialog
CupertinoAlertDialogiOS 스타일 알림 대화상자
CupertinoDialogAction
CupertinoDialogActionCupertinoAlertDialog에서 사용하는 버튼
CupertinoActionSheet
CupertinoActionSheetiOS 스타일 하단 액션 시트
CupertinoContextMenu
CupertinoContextMenuiOS 스타일 컨텍스트 메뉴 (long press)
CupertinoFullscreenDialogTransition
CupertinoFullscreenDialogTransitioniOS 스타일 전체 화면 대화상자 트랜지션

Lists & Indicators#

미리보기위젯설명
CupertinoListSection
CupertinoListSectioniOS 스타일 리스트 섹션
CupertinoListTile
CupertinoListTileiOS 스타일 리스트 행
CupertinoListTileChevron
CupertinoListTileChevron리스트 아이템의 chevron 아이콘
CupertinoActivityIndicator
CupertinoActivityIndicatoriOS 스타일 로딩 스피너
CupertinoScrollbar
CupertinoScrollbariOS 스타일 스크롤바

Text Selection Tools#

미리보기위젯설명
CupertinoTextSelectionToolbar
CupertinoTextSelectionToolbariOS 스타일 텍스트 선택 툴바
CupertinoTextMagnifier
CupertinoTextMagnifier텍스트 선택 시 확대경
CupertinoDesktopTextSelectionToolbar
CupertinoDesktopTextSelectionToolbarmacOS 스타일 텍스트 선택 툴바

Transitions#

미리보기위젯설명
CupertinoPageTransition
CupertinoPageTransitioniOS 스타일 페이지 전환 애니메이션
CupertinoNavigationBarBackButton
CupertinoNavigationBarBackButtoniOS 스타일 내비게이션 바 뒤로가기 버튼

레이아웃 위젯#

레이아웃 위젯은 자식 위젯의 위치와 크기를 결정합니다. Flutter UI의 뼈대를 구성하는 핵심 위젯들입니다.

Single Child 레이아웃#

미리보기위젯설명
Container
Containerpadding, margin, 배경색, 테두리 등을 제공하는 다목적 컨테이너
Center
Center자식을 정중앙에 배치
Align
Align자식을 특정 위치에 정렬
Padding
Padding자식 주변에 여백 추가
ConstrainedBox
ConstrainedBox자식에게 추가 제약 조건 부여
-LimitedBox제약이 없을 때만 크기 제한
SizedBox
SizedBox특정 크기의 빈 박스 또는 자식 크기 강제
-FittedBox자식을 부모에 맞게 스케일/정렬
-AspectRatio자식의 가로세로 비율 유지
-FractionallySizedBox부모 크기의 비율로 자식 크기 결정
-IntrinsicWidth자식의 intrinsic width로 크기 결정
-IntrinsicHeight자식의 intrinsic height로 크기 결정
-Baseline자식의 baseline에 따라 위치 결정
-Offstage자식을 레이아웃에서 숨기기
-OverflowBox부모 제약을 무시하고 자식에게 다른 제약 부여
-Transform자식을 페인팅 전에 변환 (회전, 스케일 등)

Multi Child 레이아웃#

미리보기위젯설명
Row
Row자식들을 가로 방향으로 배치
Column
Column자식들을 세로 방향으로 배치
Stack
Stack자식들을 겹쳐서 배치
-IndexedStackStack에서 한 번에 하나의 자식만 표시
-Wrap여러 줄/열로 자식들을 배치 (자동 줄바꿈)
-Flowflow 레이아웃 알고리즘으로 배치
-Table테이블 형태로 자식들 배치
Expanded
ExpandedRow/Column의 남은 공간을 채움
LayoutBuilder
LayoutBuilder부모 크기에 따라 다른 위젯 빌드
-CustomMultiChildLayout커스텀 delegate로 여러 자식 배치
-CustomSingleChildLayout커스텀 delegate로 단일 자식 배치

애니메이션 위젯#

애니메이션 위젯은 UI에 움직임과 전환 효과를 추가합니다. Implicit Animation1Explicit Animation2 두 가지 유형이 있습니다.

Implicit Animation (암시적 애니메이션)#

속성 값이 변경되면 자동으로 애니메이션되는 위젯입니다. 가장 사용하기 쉬운 애니메이션 방식입니다.

미리보기위젯설명
AnimatedContainer
AnimatedContainerContainer의 속성이 바뀌면 자동 애니메이션
AnimatedOpacity
AnimatedOpacity투명도 변화를 자동 애니메이션
-AnimatedAlign정렬 위치 변화를 자동 애니메이션
-AnimatedPaddingpadding 변화를 자동 애니메이션
-AnimatedPositionedStack 내 위치 변화를 자동 애니메이션
-AnimatedSize크기 변화를 자동 애니메이션
-AnimatedDefaultTextStyle텍스트 스타일 변화를 자동 애니메이션
-AnimatedPhysicalModelPhysicalModel의 속성 변화를 자동 애니메이션
-AnimatedCrossFade두 자식 간 크로스페이드 전환
-AnimatedList아이템 삽입/삭제 시 자동 애니메이션되는 리스트
-AnimatedModalBarrier뒤 위젯과의 상호작용을 막는 애니메이션 배리어

Explicit Animation (명시적 애니메이션)#

AnimationController3를 사용하여 직접 제어하는 애니메이션입니다. 더 세밀한 제어가 필요할 때 사용합니다.

미리보기위젯설명
FadeTransition
FadeTransition투명도 애니메이션
-ScaleTransition스케일 애니메이션
-RotationTransition회전 애니메이션
-SlideTransition위치 이동 애니메이션
-SizeTransition크기 변화 애니메이션
-AlignTransition정렬 애니메이션
-PositionedTransitionStack 내 위치 애니메이션
-RelativePositionedTransition상대적 위치 애니메이션
-DecoratedBoxTransitionDecoration 애니메이션
-DefaultTextStyleTransition텍스트 스타일 애니메이션
-MatrixTransitionMatrix4 변환 애니메이션
-AnimatedWidgetListenable 값 변화 시 재빌드되는 기본 클래스
-AnimatedBuilder애니메이션 빌더 위젯

Hero Animation#

미리보기위젯설명
Hero
Hero화면 전환 시 위젯이 날아가는 애니메이션

스크롤링 위젯#

스크롤 가능한 콘텐츠를 만드는 위젯입니다.

기본 스크롤 위젯#

미리보기위젯설명
ListView
ListView가장 흔히 사용되는 스크롤 가능한 리스트
GridView
GridView2차원 그리드 스크롤 뷰
-PageView페이지 단위로 스크롤
-SingleChildScrollView단일 자식을 스크롤 가능하게 함
-CustomScrollViewSliver를 사용한 커스텀 스크롤 효과
-NestedScrollView중첩 스크롤 뷰
-ReorderableListView드래그로 항목 순서 변경 가능한 리스트
-DraggableScrollableSheet드래그로 크기 조절 가능한 스크롤 시트

스크롤 유틸리티#

미리보기위젯설명
-Scrollable스크롤 동작의 기반 클래스
Scrollbar
ScrollbarMaterial Design 스크롤바
-ScrollConfiguration하위 트리의 스크롤 동작 설정
-NotificationListener스크롤 Notification 감지

Sliver 위젯#

Sliver는 스크롤 가능한 영역의 일부를 구현하는 특수 위젯입니다. CustomScrollView4 안에서 사용됩니다.

미리보기위젯설명
SliverAppBar
SliverAppBar스크롤에 따라 확장/축소되는 AppBar
-SliverList선형 배열로 자식들을 배치하는 sliver
-SliverGrid2차원으로 자식들을 배치하는 sliver
-SliverFixedExtentList고정 높이 항목의 sliver 리스트
-SliverFillRemainingviewport 남은 공간을 채우는 sliver
-SliverToBoxAdapter일반 Box 위젯을 sliver로 감싸기
-SliverPaddingsliver에 padding 적용
-SliverPersistentHeader스크롤 시 상단에 고정되는 헤더
-SliverFadeTransitionsliver의 opacity 애니메이션
-SliverChildBuilderDelegatebuilder 콜백으로 sliver 자식 생성
-SliverChildListDelegate명시적 리스트로 sliver 자식 제공

입력 및 폼 위젯#

사용자 입력을 받는 위젯입니다.

미리보기위젯설명
-Form여러 폼 필드를 그룹화하는 선택적 컨테이너
-FormField단일 폼 필드의 기본 클래스
-Autocomplete텍스트 입력 시 자동완성 옵션 제공
DropdownButton
DropdownButton드롭다운 선택 메뉴

시각 효과 위젯#

시각적 효과를 추가하는 위젯입니다.

미리보기위젯설명
Opacity
Opacity자식을 부분적으로 투명하게
-BackdropFilter뒤의 콘텐츠에 필터(blur 등) 적용
-ClipRect사각형으로 자식 클리핑
-ClipOval타원형으로 자식 클리핑
-ClipPath경로로 자식 클리핑
-DecoratedBoxDecoration을 페인트하는 위젯
-RotatedBox90도 단위로 자식 회전
-CustomPaintpaint 단계에서 커스텀 그리기

제스처 및 상호작용 위젯#

사용자 제스처와 상호작용을 처리하는 위젯입니다.

미리보기위젯설명
GestureDetector
GestureDetector다양한 제스처 감지 (탭, 드래그 등)
Draggable
Draggable드래그 가능한 위젯
-LongPressDraggablelong press로 드래그 시작
-DragTargetDraggable을 받는 타겟
Dismissible
Dismissible스와이프로 해제 가능한 위젯
-InteractiveViewer팬/줌 상호작용 제공
-AbsorbPointerhit testing 중 포인터 이벤트 흡수
-IgnorePointerhit testing 시 자식을 무시

비동기 빌더 위젯#

비동기 데이터를 처리하는 위젯입니다.

미리보기위젯설명
FutureBuilder
FutureBuilderFuture 상태에 따라 위젯 빌드
StreamBuilder
StreamBuilderStream 상태에 따라 위젯 빌드

유틸리티 위젯#

기타 유용한 위젯입니다.

미리보기위젯설명
-IconMaterial Design 아이콘 표시
-Image이미지 표시
-Text단일 스타일의 텍스트 표시
-RichText여러 스타일의 텍스트 표시
FlutterLogo
FlutterLogoFlutter 로고 위젯
-Placeholder개발 중 위치 표시용 박스
-Navigator화면 전환 스택 관리
-MediaQuery미디어 쿼리 데이터 제공
-Theme하위 트리에 시각적 테마 적용
-Semantics접근성을 위한 의미 정보 제공
-MergeSemantics하위 위젯의 semantics 병합
-ExcludeSemantics하위 위젯의 semantics 제외
-KeyboardListener키보드 이벤트 감지
WidgetsApp
WidgetsApp앱에 필요한 기본 위젯들의 래퍼
-AssetBundle이미지, 문자열 등 에셋 리소스 관리

위젯 선택 가이드#

플랫폼별 선택#

상황MaterialCupertino
Android 앱✓ 권장가능
iOS 앱가능✓ 권장
크로스 플랫폼기본플랫폼별 분기
플랫폼 적응형 위젯

Platform.isIOSTheme.of(context).platform으로 분기하거나, .adaptive 생성자를 제공하는 위젯을 사용하세요.

Switch.adaptive(value: true, onChanged: (_) {})

한계#

  • 모든 위젯의 세부 속성과 사용법은 공식 API 문서를 참조해야 합니다.
  • 일부 위젯은 공식 문서에 미리보기 이미지가 없어 텍스트 링크만 제공됩니다.
  • 위젯은 Flutter 버전에 따라 추가되거나 deprecated될 수 있습니다.

Footnotes#

  1. Implicit Animation(암시적 애니메이션): 속성 값이 변경되면 자동으로 애니메이션되는 방식이다. AnimatedContainer 등이 해당된다.

  2. Explicit Animation(명시적 애니메이션): AnimationController를 사용하여 개발자가 직접 제어하는 애니메이션 방식이다.

  3. AnimationController(애니메이션 컨트롤러): 명시적 애니메이션의 진행 상태를 제어하는 객체다. 시작, 정지, 역방향 등을 제어한다.

  4. CustomScrollView(커스텀 스크롤 뷰): Sliver 위젯들을 사용하여 커스텀 스크롤 효과를 만드는 위젯이다.

공유

이 글이 도움이 되었다면 다른 사람과 공유해주세요!

Flutter 실용가이드 - 위젯 CheatSheet
https://moodturnpost.net/posts/flutter/flutter-widget-cheatsheet/
작성자
Moodturn
게시일
2026-01-09
Moodturn

목차