• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    해결됨

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

23.10.27 13:42 작성 조회수 187

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)
);

답변 1

답변을 작성해보세요.

1

안녕하세요!

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

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

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

감사합니다!