inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Flutter 응용 - 공공 API를 활용한 앱 만들기 (MVVM 패턴)

메인 화면 UI 작성

setState 관련 하여 궁금한 점이 있습니다.

373

HHHHH
0

안녕하세요

저는 flutter 현직자로 조금 더 깊이 있는 공부가 필요하여

강의를 모두 구매하게 되었습니다

제가 예전 부터 궁금했던건데 setState 사용하여 화면 갱신 처리시에

a방식도 작동하고 b 방식도 작동하는데

둘의 차이가 혹시 있을까요?

/// a
setState(() {
      storesList.clear();
      for (var store in jsonStores) {
        storesList.add(Store.fromJson(store));
      }
    });
/// b
setState(() {});
storesList.clear();
for (var store in jsonStores) {
 storesList.add(Store.fromJson(store));
}

flutter

답변 1

0

오준석

강의 모두 구매 감사드립니다.

a 는 로직이 모두 수행된 후에 setState() 가 호출되서 화면 갱신이 되는 반면에

b 는 setState 가 무의미하게 한번 화면 갱신을 하고 로직이 돌기 때문에 화면에 반영이 안 됩니다.

b가 작동이 된다면 로직 이후 어딘가에서 setState 코드가 있지 않을까 예상됩니다

특정 상황에서 b 처럼 사용해야 하는 경우는 로직 뒤에 setState 를 두는게 맞습니다.

0

HHHHH

답변 감사합니다!

답변 주셨던 것 처럼 혹시 아래 처럼 사용했을 경우도 잘 동작하는데

혹시 여기에 대해서 setState 안에 쓰는 것setState 밖에 사용하는 것 두 가지 차이가 없다고 하면 둘중에 어떻게 사용하더라도 문제가 없다고 생각해도 될까요?

/// b 
storesList.clear(); 
for (var store in jsonStores) {
    storesList.add(Store.fromJson(store)); 
}
setState(() {}); 

0

오준석

네. 결과적으로는 동일합니다.

다만 일부러 b 처럼 쓰지는 않습니다. a 가 기본이라고 보시면 되고 setState()의 목적에 맞게 사용하는 것 같습니다.

다만, Future 함수 내에서 다른 Future 함수를 await 로 사용하면서 특정 타이밍에 setState()를 해야 하는 경우는 a 처럼 사용이 불가능하여 b 처럼 사용할 수 밖에 없습니다.

setState() 함수안에서는 await 사용이 불가능하기 때문입니다.

0

HHHHH

네! 감사합니다! 이해했습니다! 편안한 주말 보내세요~!!

강사님도 AI를 사용하시는지 궁금해요.

1

334

1

flutter 개발자 채용 근황

1

611

0

Firebase Storage생성하려고 하면 프로젝트업그레이드(결제)를 하라고 하네요. 강의 시점과 차이가 발생한 기능인가요?

0

1523

1

플러터 개발 질문

0

439

2

WebViewPlatform.instance != null

0

1466

4

안녕하세요!

0

427

1

현재 최신 플러터 버전이 3.22 인데요. git 리파지토리에 있는 교육 동영상 소스를 flutter upgrade 해도 에러 없이 동작 되는지 궁금 합니다.

0

420

1

Flutter의 3D Graphics 사용

0

854

1

에뮬레이터 첫 실행시 뜨는 워닝메세지

0

415

1

[보충강의] 영상이 재생되지 않습니다!

0

455

1

[창업] 짧게 써도 부담없는 일기 앱 만들고 있어요

1

721

0

백앤드 관련 질문드립니다..!

0

769

1