강의

멘토링

커뮤니티

Inflearn Community Q&A

tkdgh8114888's profile image
tkdgh8114888

asked

[Code Factory] [Intermediate] Flutter Real Practice! State Management, Cache Management, Code Generation, GoRouter, Authentication Logic, etc. Essential Skills to Become an Intermediate!

StateNotifierProvider Practice

notifier provider /state에 바로 추가하는 것과 add함수로 추가하는 것 차이

Resolved

Written on

·

329

0

onPressed: () {
  ref.read(shoppingListProvider.notifier).state += [
    ShoppingItemModel(
        name: uuid.v1(),
        quantity: 5,
        hasBought: false,
        isSpicy: true)
  ];
},

추가하는 것도 혼자 연습해보다가 의문이 생겼습니다.

위 코드에서는 watch해둔 것 때문에 build()가 바로바로 재실행되는 것 같은데 아래같이 List에 추가할 때처럼 add함수로 추가하면 build()가 되지 않고 HomeScreen으로 나갔다 들어와야만 적용이 되는 것을 볼 수 있었습니다.

똑같이 state에 model을 추가하는 것인데 무슨 차이가 있는 건가요?

 

ref.read(shoppingListProvider.notifier).state.add(
  ShoppingItemModel(
      name: uuid.v1(),
      quantity: 5,
      hasBought: false,
      isSpicy: true)
);
flutter하이브리드-앱

Answer 1

1

codefactory님의 프로필 이미지
codefactory
Instructor

안녕하세요!

List에 add() 함수를 사용하면 리스트의 메모리 주소가 달라지지 않습니다.

즉, 리스트 안에 값을 변경하긴 했지만 List 자체가 다른 리스트가 아니기 때문에 watch()가 성립되지 않습니다.

모든 상태관리 툴에서 watch() 하는 기능은 실제 변수의 메모리 주소가 변경돼야만 실행됩니다.

감사합니다!

tkdgh8114888's profile image
tkdgh8114888

asked

Ask a question