250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Flutter #Stream #dart
- 플러터 #안드로이드 #플레이콘솔 #앱내리기
- 희망적금전환
- 도약계좌전환
- 도약연계
- flutter #dart #stream
- 청년도약계좌환승
- Flutter #Stream
- 조립 후 재부팅
- 도약전환
- 희망적금연계
- 안드로이드 #코틀린 #코루틴 #콜백 #채널
Archives
- Today
- Total
Flutter 개발 상자
[Flutter] [Riverpod] CircularDependencyError 오류 해결 본문
728x90
에러 분석
위 에러는 Riverpod Provider들이 서로가 서로를 의존하는 순환 참조 에러이다.
순환 참조에 대한 ChatGPT의 설명은 다음과 같다.
순환 참조(circular reference)는 두 개 이상의 객체나 모듈이 서로를 참조하는 상황을 나타냅니다. 이는 무한 루프와 같은 문제를 일으킬 수 있으며 메모리 누수와 같은 예기치 못한 동작을 초래할 수 있습니다.
프로그래밍에서 순환 참조는 주로 다음과 같은 상황에서 발생할 수 있습니다:
- 객체 간의 순환 참조:
- 클래스나 객체 A가 다른 클래스나 객체 B를 참조하고, 동시에 B도 A를 참조하는 경우입니다. 이런 상황에서 A를 가리키는 참조 카운트와 B를 가리키는 참조 카운트가 0이 되지 않아 메모리가 해제되지 않을 수 있습니다.
- 모듈 간의 순환 참조:
- 모듈이 서로를 참조하는 경우입니다. 예를 들어, 모듈 A가 모듈 B를 참조하고, 동시에 모듈 B도 모듈 A를 참조하는 경우입니다. 이는 모듈 간의 의존성을 해결하는 데 어려움을 초래할 수 있습니다.
위와 같은 문제 때문에 Riverpod에서는 Provider 간의 순환참조가 일어날경우 런타임 에러가 발생하도록 설계되어있다.
해결법
보통 해당 에러의 경우 함수영역에서 watch를 사용하면서 발생한다.
A프로바이더에서 B프로바이더의 함수를 실행시켰는데 이 B프로바이더의 함수에서 A프로바이더를 watch 하고 있을경우 순환참조 에러가 발생한다.
read로 고쳐주면 간단하게 수정된다.
요약
- 함수영역에선 read 사용하기
728x90