본문 바로가기

Book/개발관련

Do it! 플러터 앱프로그래밍 3장

1. 플러터 프로젝트 구조

  1) android : 안드로이드 프로젝트 관련 파일(Android Studio)

  2) ios : ios 프로젝트 관련 파일(Xcode)

  3) lib : 플러터 앱 개발을 위한 다트파일

  4) test : 플러터 앱 개발중 테스트 파일 위치

  5) 기타 파일 

    -> pubspec.yami : package, image, font등 설정

    -> README.md : 프로젝트 관련 설명

 

2. main.dart 

  1) import 구문

    -> 패키지를 불러올때 사용하는 구문(자동완성 사용시 자동 import)

  2) main()

    -> 시작위치

    -> runApp 함수 호출위치

 

3. 상태연결에 따른 위젯 구분

  1) statelessWidget

    -> 내용을 갱신할 필요가 없는 위젯(정적)

    -> 화면에 보이기 전에 모든 로딩 완료

    -> 메모리 등의 자원 소모가 적음

  2) statefullWidget

    -> 내용을 갱신할 필요가 있는 위젯(동적)

    -> 메모리 등의 자원이 많이 소모됨

 

4. 화면 갱신

  => setState() : Flutter에서 변수의 값이 변경되는 등의 상황에서 화면을 갱신할때 사용하는 메서드

참고
* '_'(언더스코어)는 내부에서만 사용할 수 있다는 것을 의미. 변수나 함수도 내부에서만 사용하는 경우 언더스코어(_)를 넣어서 작성

 

5. 스테이트풀 위젯의 생명주기

  1) createState()

    -> StatefulWidget 클래스를 상속받는 클래스는 반드시 createState() 메서드를 호출해야 함

    -> 위젯의 상태를 생성하는 함수

  2) mounted == true 변경

    -> createState() 호출로 상태가 생성되면 mounted 속성이 true로 변경

    -> mounted == true 시, buildContext 클래스에 접근 가능

    -> buildContext 활성화되야 setState() 메서드 사용 가능

  3) initState()

    -> 위젯을 초기화할때 한번만 호출

  4) didChangeDependencies()

    -> initState 메서드 호출 후 바로 이어서 호출되는 메서드

    -> 의존성이 변경되었을 때 호출(상속받은 위젯 사용시 피상속자가 변경되면 호출)

  5) build() 

    -> Widget 반환(화면에 표시)

    -> build 메서드에서 위젯을 만들고 반환시 화면에 표시됨

  6) didUpdateWidget()

    -> 부모 위젯이나 데이터가 변경되어 위젯을 갱신해야 할 경우 호출

  7) setState()

    -> 데이터가 변경되었다는 것을 알림

    -> 변경된 데이터를 이용하여 화면의 UI를 변경

  8) deactivate()

    -> State 객체가 플러터의 구성트리로부터 제거될 때 호출

    -> dispose 메서드 호출 전에는 State 객체를 재사용 할 수 있음

  9) dispose()

    -> State 객체를 영구적으로 소멸시킬때 호출

  10) mounted == false

    -> State 객체가 소멸될때 mounted 속성의 값이 false로 변경되고, 재사용이 불가능

 

* 간략 정리 *

호출 순서 생명주기 내용
1 createState() - 처음 Statefull 시작할 때 호출
2 mounted == true - createState() 메서드가 호출되면 true로 변경
3 initState() - State에서 가장 먼저 실행되는 함수(1회만 호출됨)
4 didChangeDependencies() - initState() 호출 후에 호출
5 build() - 위젯을 렌더링(위젯 반환)
6 didUpdateWidget() - 위젯을 변경해야 할 때 호출
7 setState() - 데이터가 변경되었음을 알리는 메서드(UI에 적용하기 위해 필요)
8 deactivate() - State가 제거될 때 호출
9 dispose() - State가 완전히 제거되었을 때 호출
10 mounted == false - 모든 프로세스가 종료되면 false로 변경