ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • flutter - 위젯(Stateless Widget, Stateful Widget, Flutter Widget Tree)
    Flutter 2021. 7. 17. 02:22
    반응형

    [위젯]

    -> 위젯이란 독립적으로 실행되는 작은 프로그램

     

    -> 플러터에서 위젯이란 UI를 만들고 구성하는 모든 기본 단위 요소

     

    -> 화면 속의 이미지, 텍스트, 아이콘, 텍스트 필드, 버튼 등등을 모두 플러터에서는 위젯이라고 한다.

     

     

     

    -> 또한 눈에 보이지 않는(center, padding column 등) UI 디자인 관련해서 레이아웃을 돕는 요소들 까지도 위젯이라고 한다.

     

    레이아웃을 정의하는 모든 요소들도 위젯이라고 한다.

     

     

     

    -> 이러한 작은 요소요소가 모여 만들어진 앱 그자체도 위젯이다.

     

     

    (플러터는 비쥬얼 에디터가 없지만 코트를 ctrl + s 로 저장했을때 바로 에뮬레이터에 적용되는 것에 많이 놀랐다.)

     

     

     

    [Types of Widgets]

    -> 1. Stateless Widget

     

    -> 2. Stateful Widget

     

    -> 3. Inherited Widget

     

    Stateless Widget 과 Stateful Widget을 먼저 설명한다.

     

    [Stateless VS Stateful]

    [stateless]

    이전 상호작용이 어떠한 값도 저장하지 않는다는 의미

     

    -> 동적인 위젯

    -> 플러터 내에서 움직임이나 변화가 생기는 위젯

    -> 위젯은 어떠한 실시간 데이터도 저장 하지 않는다.

    -> 무언가 변화시키는 values 값을 가지지 않음

     

     

    [stateful]

    입력되는 밸류 값에 의한 상호작용이 상태를 지속적으로 추적하고 보존한다는 의미

     

    -> 상태가 없는 정적인 위젯

    -> 플러터 내에서 움직임이나 변화가 없는 위젯

     

    -> 사용자의 상효작용에 의해서 모양이나 형태가 바뀐다.

    (예: 사용자가 클릭했을 때 변화하는 오디오 버튼이나 체크박스 버튼들이 stateful 위젯)

     

    -> 데이터를 받게 되었을 때에도 형태가 변화한다.

    (예: 사용자가 입력했을때마다 변화하는 텍스트 필드)

     

     

     

     

    [Flutter Widget Tree]

    -> 플러터는 모든 것이 위젯으로 구성되어 있다.

     

    -> 이러한 위젯들은 트리구조로 정리될 수 있다.

     

    -> 한 위젯 내에서 여러개의 다른 위젯들이 포함될 수 있다.

     

    -> 위젯은 부모 위젯과 자식 위젯으로 구성

     

    -> Parent Widget을 widget container 라고 부르기로 한다.

     

     

    [MyApp]

    -> 앱의 루트 위젯이자 앱의 시작점

     

    -> 꼭 이름이 MyApp일 필요는 없다.

     

    -> 트리의 두번째 위치에는 MyApp에서 빌드된 MaterialApp이 있다.

     

     

     

    [MaterialApp]

    -> 실질적으로 MaterialApp위젯이 전체 앱을 감싸고 있는 위젯이다.

     

    -> MaterialApp에서 플러터 sdk가 제공하는 위젯이 라고 이름붙여진 모든 것들을 사용할 수 있게 된다.

     

    -> 3번째로는 MyHomePage 위젯이 있다.

     

     

     

     

     

     

    [MyHomePage]

    -> 이 또한 커스텀 위젯이고 이름이 반드시 MyHomePage 일 필요는 없다.

     

    -> 여기서부터 본격적으로 앱의 디자인과 기능들이 만들어 진다.

     

    -> 4번째 위치에는 scaffold 위젯이 있다.

     

     

     

     

     

     

     

    [scaffold]

     

    -> 아주 중요한 위젯이다.

     

    -> 화면과 기능을 구성하기 위한 빈페이지를 준비해주는 위젯

     

    -> scaffold 밑으로 본격적으로 UI와 관련해서 보여지는 모든 앱의 구성 요소들 (이미지 버튼 텍스트 또는 눈에 보이지는 않지만 센터 나 컬럼)이 사용된다.

    -> 5번째 위치에는 AppBar 위젯이 위치한다.

     

     

    [AppBar]

    -> scaffold 위젯이 생성 되었기 때문에 이제부터는  앱 화면의 가장 상단에 위치하는  AppBar부터 디자인이 가능

     

     

     

     

     

     

    -> 6번째 위치에는 AppBar의 구성 요소중 하나인 text 위젯이 위치한다.

     

     

     

     

     

     

     

     

    -> 여기부터는 AppBar 밑으로 page의 바디 부분에 해당하는 부분이 오게 된다.

     

     

    -> 눈에 보이는 위젯은 아니지만 모든 구성 요소들을 화면의 중앙에 위치 시키기 위한 ceter 위젯이 7번째로 오게 되고,

     

    이 밑으로 요소들을 세로로 위치 시키기 위한 column 위젯이 8번째로 오게 된다.

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    300x250

    댓글

Designed by Tistory.