안녕하세요
저는 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));
}
강의 모두 구매 감사드립니다.
a 는 로직이 모두 수행된 후에 setState() 가 호출되서 화면 갱신이 되는 반면에
b 는 setState 가 무의미하게 한번 화면 갱신을 하고 로직이 돌기 때문에 화면에 반영이 안 됩니다.
b가 작동이 된다면 로직 이후 어딘가에서 setState 코드가 있지 않을까 예상됩니다
특정 상황에서 b 처럼 사용해야 하는 경우는 로직 뒤에 setState 를 두는게 맞습니다.
답글
HHHHH
2023.02.12답변 감사합니다!
답변 주셨던 것 처럼 혹시 아래 처럼 사용했을 경우도 잘 동작하는데
혹시 여기에 대해서 setState 안에 쓰는 것과 setState 밖에 사용하는 것 두 가지 차이가 없다고 하면 둘중에 어떻게 사용하더라도 문제가 없다고 생각해도 될까요?
오준석
2023.02.12네. 결과적으로는 동일합니다.
다만 일부러 b 처럼 쓰지는 않습니다. a 가 기본이라고 보시면 되고 setState()의 목적에 맞게 사용하는 것 같습니다.
다만, Future 함수 내에서 다른 Future 함수를 await 로 사용하면서 특정 타이밍에 setState()를 해야 하는 경우는 a 처럼 사용이 불가능하여 b 처럼 사용할 수 밖에 없습니다.
setState() 함수안에서는 await 사용이 불가능하기 때문입니다.
HHHHH
2023.02.12네! 감사합니다! 이해했습니다! 편안한 주말 보내세요~!!