Flutter 위젯의 계층구조
참고
Widget
- Widget - immutable한 UI 정보입니다. mutable 상태를 가지게 하려면 StatefulWidget을 사용해야 합니다.
-
PreferredSizeWidget - unconstrained일 때 미리 설정한 기본크기를 가지게 하는 위젯
AppBar- 머터리얼 디자인 앱바CupertinoTabBar- iOS 스타일의 bottom 네비게이션 탭바- ObstructingPerferredSizeWidget - 기본크기를 가지고, 뒤에 있는 위젯들을 완전히 막는 위젯
CupertinoNavigationBar- iOS 스타일의 네비게이션바
- PreferredSize - 자식의 레이아웃에 어떤 영향도 끼치지 않으면서 단지 부모에 의해 사용될 기본크기를 가지는 위젯
TabBar- 머터리얼 디자인 탭바. 일반적으로 앱바 아래에 생성하고 TabBarView와 함께 사용합니다.
-
ProxyWidget - 새 위젯을 만들지 않고 자식 위젯을 제공받는 위젯
- IngeritedWidget - 상태를 후손 위젯들이 read할 수 있게 하는 위젯
- ButtonTheme
- ChipTheme
- CupertinoTheme
- DefaultAssetBundle
- DefaultTextStyle
- Directionality
- DropdownButtonHideUnderline
- FlexibleSpaceBarSettings
- IconTheme
- InheritedModel
- InheritedNotifier
- ListTileTheme
- MediaQuery
- PrimaryScrollController
- ScrollConfiguration
- SliderTheme
- TickerMode
- ParentDataWidget - 자식이 부모 위젯의 레이아웃을 설정할 수 있게끔 해주는 위젯
- Flexible - Row, Column, Flex의 자식이 어떻게 유연(flexes)해질지 제어하는 위젯
Expanded- Row, Column, Flex의 자식을 늘리는(expands) 위젯
- KeepAlive - SliverGrid, SliverList 같은 SliverWithKeepAliveWidget들에서 사용합니다. 자식이 lazy list에 있을 때도 살아서 머무르도록 하기 위해 필요함(needing)으로 마크합니다.
- LayoutId - CustomMultiChildLayout에서 자식들을 구별시키기 위한 메타데이터
Positioned- Stack의 자식의 위치를 제어하는 위젯TableCell- Table의 자식을 어떻게 정렬할지 제어하는 위젯
- Flexible - Row, Column, Flex의 자식이 어떻게 유연(flexes)해질지 제어하는 위젯
- IngeritedWidget - 상태를 후손 위젯들이 read할 수 있게 하는 위젯
-
RenderObjectWidget - RenderObjectElement들을 위한 설정을 제공하는 위젯. RenderObjectElement는 실제로 렌더링을 제공하는 RenderObject를 감싼 클래스
LayoutBuilder- 부모 위젯의 크기를 알 수 있는 위젯 트리를 빌드하는 위젯- LeafRenderObjectWidget - RenderObject의 서브클래스들을 설정할 수 있는, 그리고 자식이 없는 RenderObjectWidget들을 위한 슈퍼클래스
- ErrorWidget - 예외 메시지를 렌더링 하는 위젯
- PerformanceOverlay - 성능 통계를 렌더링 하는 위젯
- RawImage - dart:ui.Image를 직접 렌더링 하는 위젯
- RichText - rich한 텍스트 구문을 렌더링 하는 위젯
- Texture - 사각형의 텍스쳐를 렌더링 하는 위젯
- WidgetToRenderBoxAdapter - RenderBox를 위젯 트리에 배치하기 위한 어댑터
- ListWheelViewport - ???? wheel 위에서 자식들의 서브셋을 보여주는 위젯
- MultiChildRenderObjectWidget - RenderObject 서브클래스들을 설정할 수 있는, 그리고 단일 자식 리스트를 가지는 RenderObjectWidget들을 위한 슈퍼클래스. 이 슈퍼클래스는 오직 자식 리스트만 제공합니다. 갱신 로직은 제공하지 않습니다.
- CustomMultiChildLayout - 자식들의 크기와 위치를 지정하는 delegate를 사용하는 위젯
- Flex - 자식들을 한 방향으로 배열하는 위젯
Column- 자식들을 수직 방향으로 배열하는 위젯Row- 자식들을 수평 방향으로 배열하는 위젯
- Flow - 자식들의 크기와 위치를 FlowDelegate의 로직에 따라 효과적으로 지정하는 위젯
- ListBody - 주어진 방향으로 자식들을 순차적으로 배열하는 위젯. 다른 방향에서는 부모의 dimension으로 자식들을 강제합니다. 이 위젯은 거의 사용되지 않습니다. 대신에 ListView나 Column 사용을 고려하세요.
- ShrinkWrappingViewport - 안쪽에서 더 크면 shrink 되는 위젯. 자식들을 mainAxis로 wrap 시킵니다.
Stack- 자신의 영역 안에서 자식들의 위치를 상대적으로 지정할 수 있는 위젯IndexedStack- 하나의 자식만 보여주는 Stack
- Viewport - 안쪽에서 더 큰 위젯. 스크롤링을 통해 자식들의 서브셋을 볼 수 있습니다.
- NestedScrollViewViewport - NestedScrollView에 의해 사용되는 Viewport
Wrap- 주어진 방향으로 자식들이 배열하다가 넘치면 다음 줄에 배열하는 위젯
- RenderObjectToWidgetAdapter - RenderObject에서 Element 트리로 가는 브릿지
- SingleChildRenderObjectWidget - RenderObject 서브클래스들을 설정할 수 있는, 그리고 단일 자식을 가지는 RenderObjectWidget들을 위한 슈퍼클래스. 이 슈퍼클래스는 오직 단일 자식만 제공합니다. 갱신 로직은 제공하지 않습니다.
AbsorbPointer- hit testing을 하는 동안 (absorbing=true) 포인터 이벤트를 막습니다.Align- 자신의 영역에서 자식을 정렬하는 위젯 선택적으로 자식의 크기를 기반으로 자신의 크기를 지정할 수 있습니다.Center- 자신의 영역에서 자식을 중앙정렬 하는 위젯
- AnimatedSize - 자식의 크기가 변경될 때마다 주어진 시간 동안 자동으로 transition 되는 animated 위젯
- AnnotatedRegion - 레이아웃 트리의 지역을 구분하기 위해 명시하는 용도로 쓰는 위젯
AspectRatio- 특정 비율로 자식의 크기를 지정하는 위젯- BackdropFilter - 필터를 적용하는 위젯
Baseline- 자식의 베이스라인을 따라서 자식의 위치를 지정하는 위젯- BlockSemantics - ???
ClipOval- 원을 사용해서 자식을 clip 하는 위젯- ClipPath - path를 사용해서 자식을 clip 하는 위젯
- ClipRect - 사각형을 사용해 자식을 clip 하는 위젯
ClipRRect- 둥근 사각형을 사용해서 자식을 clip 하는 위- CompositedTransformFollower - CompositedTransformTarget을 따르는 위젯
- CompositedTransformTarget - CompositedTransformFollower에 의해 targeted 될 수 있는 위젯
ConstrainedBox- 자식에 constraints를 지정할 수 있는 위젯- CustomPaint - 캔버스를 제공하는 위젯
- CustomSingleChildLayout - delegate로 자식의 레이아웃을 지정하는 위젯
- DecoratedBox - 자식이 그려진 전후에 Decoration을 그리는 위젯
- ExcludeSemantics - ???
FadeTransition- 위젯의 투명도를 애니메이션합니다.FittedBox- fit 속성에 따라서 자식의 비율과 위치를 지정하는 위젯FractionallySizedBox- 사용 가능한 공간의 fraction으로 자식의 크기를 지정하는 위젯FractionalTransition- 자식을 그리기 전에 이동 transformation을 적용하는 위젯IgnorePointer- hit testing 하는 동안 (ignoring=true) invisible 됩니다.- IndexedSemantics - ???
IntrinsicHeight- intrinsic 높이로 자식의 크기를 지정하는 위젯IntrinsicWidth- intrinsic 너비로 자식의 크기를 지정하는 위젯LimitedBox- unconstrained 일 때 크기를 제한하는 위젯- Listener - 포인터 이벤트의 응답으로 콜백을 호출하는 위젯
- MergeSemantics - ???
- MetaData - 렌더 트리에서 불투명한 메타 데이터를 고정하는 위젯
- Offstage - 자식을 페인팅 없이, hit testing 없이, 부모 안에서 공간을 차지함 없이 트리에 배치하는 위젯
Opacity- 자식에게 투명도를 만들어주는 위젯- OverflowBox - ???
Padding- PhysicalModel
- PhysicalShape
- RepaintBoundary
RotatedBox- Semantics
- ShaderMask
- SizeChangedLayoutNotifier
SizedBox- SizedOverflowBox
- SliverFillRemaining
- SliverOverlapAbsorber
- SliverOverlapInjector
SliverPadding- SliverToBoxAdapter
TransformUnconstrainedBox
- SliverWithKeepAliveWidget
- SliverMultiBoxAdapterWidget
Table
-
StatefulWidget
- AndroidView
- AnimatedCrossFade
- AnimatedList
- AnimatedSwitcher
- AnimatedWidget
AppBar- AutomaticKeepAlive
- BottomAppBar
BottomNavigationBarBottomSheetCheckbox- CupertinoActivityIndicator
- CupertinoApp
- CupertinoButton
- CupertinoDatePicker
- CupertinoNavigationBar
- CupertinoPicker
- CupertinoScrollbar
- CupertinoSegmentedControl
- CupertinoSlider
- CupertinoSliverNavigationBar
- CupertinoSliverRefreshControl
- CupertinoSwitch
- CupertinoTabScaffold
- CupertinoTabView
- CupertinoTextField
- CupertinoTimerPicker
- DefaultTabController
DismissibleDraggable- DragTarget
- DrawerController
- DropdownButton
- EditableText
- ExpandIcon
- ExpansionPanelList
- ExpansionTile
FadeInImage- FlexibleSpaceBar
- FocusScope
- Form
- FormField
FutureBuilder- GlowingOverscrollIndicator
HeroImage- ImplicitlyAnimatedWidget
- Ink
- InkResponse
- InputDecorator
- LicensePage
- ListWheelScrollView
- Localizations
- Material
MaterialApp- MergeableMaterial
MonthPickerNavigatorNestedScrollViewOverlayPageView- PaginatedDataTable
- PopupMenuButton
- PopupMenuEntry
ProgressIndicatorRadio- RawChip
- RawGestureDetector
- RawKeyboardListener
- RawMaterialButton
RefreshIndicator- ReorderableListView
Scaffold- Scrollable
- Scrollbar
- SemanticsDebugger
- Slider
SliverAppBar- SnackBarAction
- StatefulBuilder
- StatusTransitionWidget
- Stepper
- StreamBuilderBase
- Switch
TabBarTabBarViewTextField- TextSelectionGestureDetector
Tooltip- UiKitView
- UniqueWidget
- UserAccountsDrawerHeader
- ValueListenableBuilder
- WidgetInspector
- WidgetsApp
- WillPopScope
YearPicker
-
StatelessWidget
AboutDialog- AboutListTile
- ActionChip
AlertDialog- AnimatedIcon
- BackButton
- BackButtonIcon
- Banner
- Builder
- ButtonBar
Card- CheckboxListTile
- CheckedModeBanner
Chip- ChoiceChip
- CircleAvatar
- CloseButton
Container- CupertinoActionSheet
- CupertinoActionSheetAction
- CupertinoAlertDialog
- CupertinoDialog
- CupertinoDialogAction
- CupertinoFullscreenDialogTransition
- CupertinoNavigationBarBackButton
- CupertinoPageScaffold
- CupertinoPageTransition
- CupertinoPopupSurface
- CupertinoTabBar
- DataTable
DayPickerDialogDividerDrawerDrawerHeaderDropdownMenuItem- FilterChip
FloatingActionButton- FlutterLogo
GestureDetectorGridPaperGridTileGridTileBarIconIconButtonImageIcon- InputChip
- KeyedSubtree
ListTile- MaterialButton
- ModalBarrier
- NavigationToolbar
- NotificationListener
- OrientationBuilder
- PageStorage
Placeholder- PositionedDirectional
- PreferredSize
- RadioListTile
SafeAreaScrollView- SimpleDialog
- SimpleDialogOption
- SingleChildScrollView
- SliverPersistentHeader
- SliverSafeArea
SnackBarSpacer- SwitchListTile
Tab- TabPageSelector
- TabPageSelectorIndicator
Text- Theme
- Title
VerticalDividerVisibility
-