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로 변경 |
'Book > 개발관련' 카테고리의 다른 글
Do it! 플러터 앱프로그래밍 4장(플러터 위젯 사용법) (0) | 2023.01.10 |
---|---|
Do it! 플러터 앱프로그래밍 1~2장 (0) | 2022.12.06 |