inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

riverpod watch 사용

385

Jay

작성한 질문수 3

0

flutter 화면 layout 을 만들때 코드가 길어져 Screen 의 위젯들을 분리하여 만들고
build 에서 합체시킵니다.
riverpod provider 에서 상태값을 가져와 위젯에 출력해주고자 하는데
궁금한 점은 각 분리된 위젯들에서 상태값을 독립적으로 watch 해서 적용하는 것과,
build 에서 통합적으로 watch 하다가 필요한 값들을 각 위젯으로 넘겨주는 것 중 어떤것이 성능상 이로운지
아니면 별 차이가 없는지 궁금합니다.

(각 위젯마다 여기저기서 watch 를 하고 있으면 더 성능이 떨어질 것 같기도 하고, build 에다 넣어 놓으면 화면 재 빌드 될 때 영향을 받을 것 같기도 하고 괜한 걱정인가요?^^;; )


@override
Widget build(BuildContext context) {
 var state = ref.watch(userAccountProvider);
 return Column(
    children: [
      _loginA(state.userName),
      _loginB(state.userId),
    ], 
  );
}

or

Widget _loginA() {
 var state = ref.watch(userAccountProvider);
 return Text(state.userName);
}


Widget _loginB() {
 var state = ref.watch(userAccountProvider);
 return Text(state.userId);
}

 

 

 


Flutter 하이브리드 앱

답변 1

0

코드팩토리

안녕하세요!

provider를 watch 할 위치를 렌더링 기준으로 고려하실 필요는 없습니다.

상위 위젯이 다시 렌더링되면 어차피 하위 위젯도 다시 렌더링 됩니다. (상위에 두지 않고 하위에 두겠다면 또 다른 얘기입니다. 하위에 두는게 효율적인건 맞습니다. 부분적으로만 다시 렌더링하니까요)

다만 코드 관리의 관점에서 어떤 위젯이 데이터를 들고있는게 유리할지 생각해보시는게 좋습니다!

 

0

Jay

네 답변 감사합니다.
조금 더 고민해 보겠습니다. ^^

자동 패키지 임포트 관련 질문 드립니다.

0

652

1

초급 중급 마무리한 학생입니다.. 파베관련 질문 하나만 받아주실 수 있을까요

0

440

1

Pagination 질문드립니다

0

473

1

레이아웃에 대해서 궁금한 질문!

0

499

1

강의에 적용된 디자인 패턴이 뭔가요??

1

676

1

네스팅 방식으로 goRouter Go를 사용할때, 앱바타이틀이 정상적으로 표시되지 않는 문제

0

564

2

GoRouter return이 안됩니다.

0

598

1

UserModel 에서는 IModelWithId를 implements하지 않는 이유가 있나요?

-1

540

1

서버쪽 /user/me api에서 에러가 나서 확인해보니..

0

410

1

[에러] GoRouter 적용, 401 에러가 뜹니다

0

365

1

ref.read.update // state + 1

0

449

1

typedef itemBuilder 제네릭 관련 질문이 있습니다.

0

453

1

[상태관리] Riverpod을 쓰신 이유가 있으신가요?

0

669

1

Dio 질문드립니다.!

0

780

2

CursorPagination 캐스팅 관련 문의

0

411

1

CursorPagination 캐시팅 관련 문의

0

399

2

AuthRepository 클래스 token() 함수는 Dead Code 아닌가요?

0

362

1

Rating을 GET 요청할때 DioError가 발생합니다.

-1

609

1

Token 관련 질문 드립니다.

0

452

2

수업의 내용은 아니지만 궁금해서 여쭤봅니다.

0

575

1

refresh 토큰 재발급 요청에 대해서

0

1688

1

_App 클래스가 ConsumerWidget을 상속 받으면 에러가 생깁니다

0

2554

4

이번 플러터와 다트 업데이트에서

1

268

1

Dio로 api 요청 듣고 있는데 에러가 발생합니다 ㅜㅜ

0

1176

1