RiverPod 3

[Flutter] 푸시알림 foreground와 background에서 ref.invalidate() 사용 시 새로고침 오류 해결하기

Flutter에서 ref.invalidate()를 바로 호출하면 생기는 문제와 Future.microtask로 해결한 방법Flutter로 앱을 개발하면서 Riverpod의 ref.invalidate()를 사용할 일이 생겼다. 푸시 알림을 통해 결과 화면으로 진입했을 때, 바로 서버에서 받아온 데이터를 화면에 띄우고 싶었다. 그래서 페이지에 진입하자마자 리스트를 갱신해주려고 ref.invalidate()를 호출했다.문제 상황처음에는 다음과 같은 구조로 간단하게 코드를 작성했다.@override Widget build(BuildContext context) { final listAsync = ref.watch( listAsync(dataIdentifier: identifier), ); /..

개발/Android 2025.04.21

[Flutter] Riverpod 상태관리 - ConsumerStatefulWidget 가이드

✅ ConsumerStatefulWidget을 사용해야 하는 경우ConsumerStatefulWidget은 setState()와 Riverpod 상태 관리를 동시에 사용해야 할 때 필요하다.예를 들어, 사용자가 버튼을 클릭할 때마다 UI가 변경되지만, 추가적인 상태(예: 애니메이션 컨트롤러, 텍스트 필드 입력 등)도 관리해야 할 경우 ConsumerStatefulWidget을 사용하면 적절하다.🛠 ConsumerStatefulWidget 예제 코드 (텍스트 필드 + 상태 관리)import 'package:flutter/material.dart';import 'package:flutter_riverpod/flutter_riverpod.dart';/// 상태 관리 (카운터)class CounterNotif..

개발/Android 2025.04.02

[Flutter] Riverpod 상태관리 - watch vs read 차이

Riverpod에서 watch vs read 차이점 정리 및 UI 리빌드 분석Flutter에서 상태 관리를 하다 보면 Riverpod을 선택하는 경우가 많다. 기능적으로 강력하지만, 처음 접했을 땐 watch와 read의 차이로 인해 의도치 않게 UI가 안 바뀌거나 과도하게 빌드되는 상황이 발생하기도 한다.이 글에서는 실제 사용 중 겪었던 경험을 바탕으로 watch와 read의 차이를 구체적인 예제와 함께 정리해봤다.ref.watch와 ref.read의 핵심 차이사용 방식 UI 리빌드 여부 설명ref.watch(provider)✅ 리빌드됨상태 변경 시 UI 자동 리빌드ref.read(provider)❌ 리빌드 안됨현재 값만 읽고 이후 변경 무시ref.watch(provider.notifier)❌ 리빌드 ..

개발/Android 2025.04.02