Flutter 04

rO_Or·2024년 3월 12일

Dart 그리고 Flutter

목록 보기
8/19

StatelessfulWidget

한 번만 빌드하는 위젯. 단순 화면에 표시하는 용도로 쓰이는 듯함.
생명 주기가 없고, 관리하기 용이함.

StatefulWidget

상태가 있으며, 변화가 있는 위젯. 상태에 따라 UI가 렌더링된다.

생명 주기

  • createState()
class MyClass extends StatefulWidget {
	
    State<MyClass> createState() => _MyClassState();
}

createState()statefulWidget을 생성 후 바로 호출되며 state object를 생성한다.
위젯 트리에 상태를 만들기 위해 호출된다.

  • initState()
class _MyClassState extends State<MyClass> {
//...
	
	void initState() {
    	super.initState();
    }
}

object가 트리에 주입되면, initState()가 생성자 다음으로 자동으로 실행된다.
state object가 처음 생성될 때, 단 한 번만 호출된다.

  • didChangeDependencies()
    initState()가 호출된 이후 호출된다.
    상속받은 위젯을 사용할 때, 부모가 변경되면 호출된다.

  • build()
    위젯을 반환하여, 렌더링되어 화면에 표시됨.
    이 메소드는 반드시 있어야 하며, 생명 주기 동안 여러 번 호출되지만
    첫 호출은 didChangeDependencies()가 호출된 다음이다.
    state에 속한 위젯이 업데이트될 때마다 프레임워크는 항상 build()를 실행한다.
    didUpdateWidget() 혹은 setState()가 호출될 때마다.

  • didUpdateWidget()
    위젯의 구성이 변경될 때마다 호출된다.
    부모 위젯이 구성을 변경하고, 다시 빌드해야될 때 호출된다.

  • setState()
    상태가 변경되었을 때, 프레임워크에 상태가 변경됐음을 알린다.

  • deactivate()
    state object가 트리로부터 삭제될 때마다 호출됨.
    구성 트리로부터 삭제되어 관리되진 않으나, 메모리 해체까지 된 건 아니라 사용할 수는 있다.

  • dispose()
    state object가 영구적으로 삭제될 때 호출된다.

  • mounted == true // moundted == false
    모든 위젯은 this.mounted 속성을 가지고 있다.
    buildContext가 할당될 때, this.mounted가 true로 리턴된다.
    위젯이 unmounted일 때는 setState를 호출할 경우 에러가 발생될 수 있다.

Build context

자신의 상위에 있는 위젯들의 정보들을 담고 있다.
리액트에서 useContext와 느낌이 비슷한 것 같다.

Theme.of(context).textTheme.titleLarge!.color

profile
즐거워지고 싶다.

0개의 댓글