Flutter 위젯, 함수 정리

김동연·2026년 4월 3일

개발기록일지(Flutter)

목록 보기
31/32

아래는 위젯·함수·스타일 타입이름 단위로 풀어 쓴 참고용 문서이다.


공통 타입 (위젯에 넘기는 값)

Color

형태설명
Colors.red머티리얼 이름 색
Colors.orange.shade700shade 단계
Color(0xAARRGGBB)ARGB 8자리 16진수
Color.fromRGBO(r,g,b, opacity)r,g,b 0~255, opacity 0~1
Color.fromARGB(a,r,g,b)a,r,g,b 0~255
theme.colorScheme.primary테마에서 가져오기

TextStyle

속성의미·사용
inherit부모 DefaultTextStyle 상속 여부 (기본 true)
color글자색
backgroundColor글자 뒤 배경색(문단 하이라이트 느낌)
fontSize논리 픽셀 크기
fontWeightFontWeight.w400
fontStyleFontStyle.italic
letterSpacing자간(음수 가능)
wordSpacing단어 간격
height줄 높이 = fontSize × height에 가깝게 동작(배수처럼 씀)
decoration밑줄 등 TextDecoration
decorationColor / decorationStyle / decorationThickness장식 선 스타일
fontFamily폰트 패밀리명(pubspec 등록 필요)
package패키지 폰트일 때 패키지명
overflow레거시. 보통 Text 위젯의 overflow 사용
leadingDistribution줄 앞쪽 분배(고급)
debugLabel디버그용

FontWeight

대략
w100 ~ w900Thin ~ Black
normal400
bold700

EdgeInsets / EdgeInsetsGeometry

생성자의미
EdgeInsets.all(double)사방 동일
EdgeInsets.symmetric({horizontal, vertical})대칭
EdgeInsets.only({left, top, right, bottom})한쪽만
EdgeInsets.fromLTRB(l,t,r,b)네 방향
EdgeInsets.zero0

Alignment / FractionalOffset

  • Alignment.center, topLeft, bottomRight, Alignment(x,y) (-1~1)
  • AlignmentDirectional — RTL 대응(start/end)

BoxFit (Image, FittedBox 등)

동작
fill비율 무시로 영역 채움
contain비율 유지, 전부 보임(여백 가능)
cover비율 유지, 영역 덮음(잘림 가능)
fitWidth / fitHeight한 축 맞춤
scaleDowncontain과 비슷하나 확대는 안 함
none원본 크기(넘치면 잘림)

BoxDecoration (Container.decoration 등)

속성의미
color배경색(그라데이션과 동시 사용 시 규칙 확인)
imageDecorationImage 배경 이미지
borderBorder.all 등 테두리
borderRadiusBorderRadius.circular
boxShadow그림자 리스트
gradientLinearGradient, RadialGradient
shapeBoxShape.circle / rectangle
clipBehavior클립 방식

BorderRadius

  • BorderRadius.circular(12), vertical, only, all

ButtonStyle (버튼 테마·style:)

자주 쓰는 속성의미
backgroundColorWidgetStateProperty — 눌림·비활성 등 상태별 색
foregroundColor글자·아이콘 색
overlayColor스플래시·하이라이트
elevation그림자 높이
padding내부 패딩
minimumSize / fixedSize / maximumSize크기 제약
shapeRoundedRectangleBorder
textStyle버튼 안 텍스트

InputDecoration (TextField.decoration)

속성의미
labelText / label라벨(포커스 시 위로 올라감)
hintText / hint비었을 때 힌트
helperText / errorText아래 도움말·에러
prefixIcon / suffixIcon앞뒤 아이콘
prefix / suffix아이콘 대신 위젯
prefixText / suffixText고정 문자(단위 등)
border기본 테두리
enabledBorder / focusedBorder / errorBorder / focusedErrorBorder / disabledBorder상태별 테두리
filled + fillColor채워진 배경
contentPadding필드 내부 패딩
isDense컴팩트 모드
counterText글자 수 카운터 커스텀

레이아웃·배치

Column / Row

속성의미
children자식 목록
mainAxisAlignment주축 정렬 (start,end,center,spaceBetween,spaceAround,spaceEvenly)
crossAxisAlignment교차축 (start,end,center,stretch,baseline)
mainAxisSizemin(내용 높이/너비), max(부모까지 확장 성향)
verticalDirectionColumn만: 위에서 아래 / 반대
textBaselinecrossAxisAlignment.baseline일 때 필요

Flex

속성의미
directionAxis.horizontal / vertical
나머지Column/Row와 동일

Expanded

속성의미
flex남는 주축 공간 나눌 비율(기본 1)
child필수

Flexible

속성의미
flex비율
fittight(남는 만큼 꽉), loose(최소만)
child필수

Spacer

속성의미
flexExpanded 빈 칸과 비율 경쟁

SizedBox

형태의미
SizedBox({width, height, child})고정 크기( null이면 제약 없음)
SizedBox.shrink()최소 크기
SizedBox.expand({child})부모 최대에 맞춤

Padding

  • padding (필수), child

Center

  • widthFactor, heightFactor (Align 계열), child

Align

속성의미
alignmentAlignment
widthFactor / heightFactor부모 대비 자식 영역 비율

Stack

속성의미
children아래에서 위로 그림
alignmentnon-positioned 자식 기본 정렬
fitloose / expand / passthrough
clipBehavior넘침 클립

Positioned

속성의미
left right top bottomStack 좌표
width height명시 크기
child필수

Wrap

속성의미
direction가로/세로 흐름
spacing / runSpacing자식 간·줄 간 간격
alignment / runAlignment / crossAxisAlignment줄/행 정렬

Container

속성의미
alignmentchild 작을 때 정렬
paddingEdgeInsets
colordecoration 없을 때 빠른 배경색
decorationBoxDecorationcolor 동시 사용 금지(규칙)
foregroundDecoration앞에 그리는 데코
width height고정 크기
constraintsBoxConstraints
margin바깥 여백
transformMatrix4 변환
child단일 자식

ConstrainedBox / UnconstrainedBox / IntrinsicHeight / IntrinsicWidth

  • ConstrainedBox: constraints로 추가 제한
  • UnconstrainedBox: 부모 제약 완화(주의 깊게 사용)
  • IntrinsicHeight/IntrinsicWidth: 자식 내재 크기에 맞춤(비용 있음)

LayoutBuilder

  • builder: (context, constraints) => Widget — 부모 BoxConstraints로 반응형

FittedBox

속성의미
fitBoxFit
alignment자식 정렬
child필수

AspectRatio

  • aspectRatio: width/height 비, child

FractionallySizedBox

속성의미
widthFactor heightFactor부모의 몇 % 너비/높이
alignment, child

Builder

  • builder: (context) => Widget — 새 BuildContext 필요할 때

스크롤·리스트

SingleChildScrollView

속성의미
child하나
scrollDirection가로/세로
controllerScrollController
physics스크롤 물리
padding

ScrollController

메서드/속성의미
offset현재 스크롤 위치
jumpTo / animateTo이동
addListener스크롤 변화 감지
disposeState에서 dispose 호출

ListView

속성의미
children적을 때
scrollDirection
controller
physicsNeverScrollableScrollPhysics
padding
shrinkWrap높이를 내용만큼만(부모 제약 이슈 시)
itemExtent행 높이 고정(성능)

ListView.builder

속성의미
itemCount개수(없으면 무한 빌드 가능 → 주의)
itemBuilder(context, index) => Widget
findChildIndexCallback키 보존 등 고급
위와 동일controller, physics, padding, shrinkWrap, itemExtent

ListView.separated

  • itemBuilder, separatorBuilder, itemCount

GridView / GridView.builder

속성의미
gridDelegateSliverGridDelegateWithFixedCrossAxisCount(crossAxisCount, childAspectRatio, crossAxisSpacing, mainAxisSpacing) 또는 WithMaxCrossAxisExtent
children / itemBuilder고정 vs 빌더

CustomScrollView

속성의미
sliversSliver 위젯 리스트
controller
scrollDirection
physics

자주 쓰는 Sliver

Sliver역할
SliverAppBar접히는/고정 앱바 (flexibleSpace, pinned, floating, snap, expandedHeight)
SliverToBoxAdapter일반 위젯 하나
SliverListSliverChildListDelegate 또는 SliverChildBuilderDelegate
SliverGridSliverGridDelegate
SliverPadding슬라이버 패딩
SliverFillRemaining남는 세로 채움
SliverPersistentHeader고정/스크롤 헤더(고급)

NestedScrollView

속성의미
headerSliverBuilder상단 Sliver들
body보통 TabBarView

PageView

속성의미
children 또는 PageView.builder
controllerPageController(initialPage 등)
onPageChanged인덱스
scrollDirection

DraggableScrollableSheet

속성의미
builder(context, scrollController) => Widget
initialChildSize처음 높이 비율(0~1)
minChildSize / maxChildSize
expand

텍스트

Text

속성의미
data문자열(생성자)
styleTextStyle
textAlign
textDirectionRTL
locale / softWrap / overflow / textScaleFactor
maxLines
semanticsLabel접근성

Text.rich

  • TextSpan 트리(자식에 TextSpan 재귀)

DefaultTextStyle

  • 하위 Text에 기본 스타일.merge

입력

TextEditingController

메서드/속성의미
text현재 문자열
selection커서·선택 범위
addListener변경 감지
dispose해제 필수

TextField

속성의미
controller
focusNodeFocusNode
decorationInputDecoration
keyboardType
textInputAction엔터키 동작
textCapitalization대문자화
style입력 글자 스타일
strutStyle줄 간격 세밀
textAlign / textAlignVertical
autofocus
readOnly
showCursor
maxLines / minLines
maxLength
onChanged / onSubmitted / onEditingComplete
inputFormatters숫자만 등 필터
cursorWidth / cursorRadius

TextFormField

  • TextField + validator, onSaved 등 폼 연동

Form

  • key: GlobalKey<FormState>validate(), save(), reset()

FocusNode / Focus / FocusScope

  • requestFocus(), unfocus(), FocusScope.of(context).nextFocus()

이미지·아이콘

Image.asset

속성의미
name경로
bundle기본 번들
scale
width height
fitBoxFit
color / colorBlendMode틴트
errorBuilder

Image.network

속성의미
srcURL
headersHTTP 헤더
loadingBuilder로딩 중
errorBuilder실패
cacheWidth cacheHeight메모리 디코드 크기 제한

Icon

  • icon, size, color, semanticLabel

머티리얼·터치

Scaffold

속성의미
appBarPreferredSizeWidget
body
floatingActionButton
floatingActionButtonLocation
drawer / endDrawer
bottomNavigationBar
persistentFooterButtons
resizeToAvoidBottomInset키보드 올라올 때 리사이즈
backgroundColor

AppBar

속성의미
title
leading뒤로 등
actionsIconButton 리스트
bottomTabBar
elevation / scrolledUnderElevation
backgroundColor / foregroundColor
centerTitle

Material

속성의미
color / shape / elevation
shadowColor
clipBehavior
child

InkWell / InkResponse

속성의미
onTap onLongPress onDoubleTap
splashColor highlightColor(테마에 맡기기도 함)
borderRadius스플래시 모양
child

GestureDetector

속성의미
onTap onLongPress onPanUpdate
behaviorHitTestBehavior

다이얼로그·시트·오버레이

showModalBottomSheet

파라미터의미
context
builder(context) => Widget
backgroundColor
elevation
shapeRoundedRectangleBorder
isScrollControlledtrue면 전체 높이 커스텀 쉬움
enableDrag드래그로 닫기
isDismissible바깥 탭 닫기
barrierColor뒤 어둡게

showDialog

파라미터의미
builder다이얼로그 내용
barrierDismissible

AlertDialog / SimpleDialog

  • title, content, actions, icon

Overlay / OverlayEntry

  • OverlayEntry(builder: (context) => Widget)
  • insert / remove제거 누락 주의

네비게이션·전환

  • Route 객체: MaterialPageRoute(builder: ...), CupertinoPageRoute

Hero

속성의미
tag화면 간 유일해야 함
child

애니메이션

AnimatedContainer / AnimatedOpacity / AnimatedAlign

공통의미
duration
curveCurves.easeIn
애니메이션 대상 속성각 위젯별

AnimationController

  • vsync: TickerProvider, duration, forward(), reverse(), dispose() 필수

Tween + AnimatedBuilder

  • animation: controller.drive(Tween) 형태

AnimatedSwitcher

속성의미
child바뀌면 전환
duration
transitionBuilder커스텀 전환

그리기

CustomPaint

속성의미
painterCustomPainter?
foregroundPainter앞 레이어
child아래에 그릴 위젯
sizeCustomPaint 단독일 때

CustomPainter

  • paint(Canvas canvas, Size size), shouldRepaint(covariant CustomPainter oldDelegate)

기타

SafeArea

  • minimum, left right top bottom 등으로 패딩 제어

RepaintBoundary

  • child — 리페인트 격리

WillPopScope / PopScope

  • 뒤로가기 인터셉트

NotificationListener

  • onNotification — 스크롤 노티 등

AbsorbPointer / IgnorePointer

  • absorbing / ignoring

InteractiveViewer

속성의미
minScale maxScale
panEnabled scaleEnabled
child

한 장 요약: 무엇을 언제

목적위젯/함수
세로/가로 나열Column / Row
남는 공간Expanded / Spacer / Flexible
겹침Stack + Positioned
스크롤 한 덩어리SingleChildScrollView
긴 리스트ListView.builder
앱바+리스트 한 스크롤CustomScrollView + Sliver
입력TextField + InputDecoration
모달 시트showModalBottomSheet
화면 전환Navigator + Route
직접 그림CustomPaint

0개의 댓글