inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

Redirection

setState 내부, 외부에 명령어를 담을 때의 차이가 궁금합니다.

421

동라파덕

작성한 질문수 1

0

안녕하세요 go router redirection 강의 듣고 있습니다.

onPressed의 setState 내부에 authState = !authState 를 넣거나, authState = !authState 를 실행하고 setState를 하는 방법에 어떤 차이가 있는 지 궁금합니다.

모두 겉으로 보기에는 잘 작동하는 것 같은데 무엇을 사용해야 더 효율적인 방법인가요?

 

ElevatedButton(
  onPressed: () {
    setState(() {
      authState = !authState;
    });
  },
  child: Text(authState ? 'logout':'login',),
),
ElevatedButton(
  onPressed: () {
    authState = !authState;
    setState(() {
    });
  },
  child: Text(authState ? 'logout':'login',),
),

flutter 하이브리드-앱

답변 1

1

코드팩토리

안녕하세요!

둘 모두 결과적으로 같기는 합니다.

왜냐하면 setState()는 build() 함수를 재실행해주는 함수이며 build() 함수를 재실행 할경우 기존에 변경돼있던 모든 변수값을 새로 반영해서 렌더링을 하기때문이죠.

setState()에 입력되는 콜백 함수도 실제로 setState() 실행과 동시에 바로 실행됩니다. 레퍼런스는 아래에서 봐 볼 수 있습니다.

https://api.flutter.dev/flutter/widgets/State/setState.html

하지만 개발자가 봤을때 직관적으로 느끼는 부분이 다릅니다. 변수 변경은 어디서든 할 수 있지만 setState()의 콜백 내부에 변수 변경을 입력한다면 build() 함수가 재실행되면서 확실히 해당 변수들의 값들이 변경된 상태로 새로 렌더링되기를 기대한다는 뉘앙스를 포함 할 수 있습니다.

감사합니다!

Isar 마지막 업데이트는 2년전입니다.

0

31

0

FlutterSecureStorage 질문

0

32

0

Dio onError Interceptor 만드는 부분에 질문이 있습니다.

0

80

2

관리자 기능에 대한 질문

0

100

2

part 'restaurant_model.g.dart';

0

92

1

36강. dio 인터셉터에 storage를 전달하는 코드가 이해 안되는데요. 도움 부탁드립니다.

0

56

2

2번 반환 상황 관련 질문

0

61

2

riverpod 3.0

0

140

2

Asset folder??

0

83

2

디자이너와 협업 시 프레임 크기 설정 관련 질문

0

114

2

FutureProvider, StateNotifierProvider 선택 기준

0

70

2

컴포넌트 모델화

0

64

2

쿼리 파라미터

0

84

2

화면 안보임

0

68

2

PaginationListView

0

54

1

강의중 37.Dio onErrorInterceptor 작업하기 dio 관련 질문입니다.

0

103

2

프로토타입이미지

0

62

2

여러 객체를 상태 관리하는 방법에 대한 질문

0

85

2

장바구니 결제하기 응답이 500이 옵니다.

0

105

2

removeFromBasket에서 await patchBasket()을 마지막에 하면 에러나는거 아닌가요?

0

67

2

이 두가지는 완전히 동일한 기능인가요?

0

106

3

내부 코드를 작성하지 않은 CursorPaginationLoading가 어떻게 로딩상태를 갖는지 잘 모르겠습니다...

0

77

2

_SplashScreenState에서 storage를 late로 호출해서 한번만 불러와도 되나요?

0

86

2

코딩 작성 순서 관련 질문

0

88

2