flutter StatefulWidget 특성 / ui 가 안바뀐다면

이건개발·2024년 9월 14일
0

참고 영상: https://youtu.be/CD1Y2DmL5JM?t=5689

StatelessWidget 으로는 ui 를 변경할 수 없고
StatefulWidget 을 써야한다.

setState(() {
  //
});

setState 를 호출하면 상태변경을 시도하는데 이때 다시 Build() 함수가 호출된다.

내가 삽질한 부분은

class _YellowBirdState extends State<YellowBird> {
  int count = 0;
  String label = "start";

  @override
  Widget build(BuildContext context) {
    // 이거 실수
    // count = 0;
    // label = "start";
    
    return MaterialApp(
      theme: ThemeData.dark(),
      home: Scaffold(
        appBar: AppBar(title: Center(child: Text("title"))),
        body: Column(
          children: [
            ElevatedButton(
              onPressed: () {
                setState(() {
                  count++;
                  label = "count: $count";
                  print("setState $label");
                });
              },
              child: Text(
                "button",
                style: TextStyle(fontSize: 50, color: Colors.white),
              ),
            ),
            Text(
              label,
              style: TextStyle(fontSize: 99, color: Colors.white),
            ),
          ],
        ),
      ),
    );
  }
}

이거 실수 부분을 보시면 setState 이후 다시 ui 를 그리기위해 Build() 가 호출되는데 여기다 변수를 초기화 했더니 매번 변수가 초기화 되서 아무 변화가 없었다는 것 ...

그래서 주석처리 했더니 잘 되더라 ..
시간낭비를 심하게 해서 글 적어봅니다.

profile
게임 개발 / 웹 개발 / 주식 투자 / 은퇴자 / 클라우드타입 / 파이어베이스 / 수퍼베이스 / 유니티

0개의 댓글