-
Stream과 Futureflutter 2021. 12. 1. 13:12
특정 값의 카운트를 업데이트해주는 함수와 동시에 연속적으로 다음 calculateVote 함수를 사용해봤다.
이전 함수에서 특정 프로퍼티값을 0에서 1로 트랜잭션 처리에서 업데이트시켜줬고,
새로 갱신된 값이 반영되야하는데 반영이안된다.
Future calculateVote(AppVote vote) async { var allvoteItemRef = _db.collection('votes').doc(vote.voteUid).collection('voteItem'); Stream<QuerySnapshot<Map<String, dynamic>>> listQs = allvoteItemRef.snapshots(); listQs.forEach((element) async{ element.docs.forEach((docsElement) async { if(docsElement.data()!['count'] == 0){ print('카운트 0 인 문서의 아이디 >> ' + docsElement.id.toString()); } else { } }); }); }
총 리스트 안의 엘리먼트는 두개가 존재하고, 한개의 값이 0이 아니고 1이 되었기 때문에 카운트 0인 문서의 아이디는
총 두개중에 여전히 0인 요소의 아이디가 한번만찍혀야되는데
1로 갱신되기 전의 요소 아이디도 콘솔에 찍힌다. 갱신된 값이 포문의 조건문에 안걸린다.
Future calculateVote(AppVote vote) async { var listQs = await Future.wait([ _db.collection('votes').doc(vote.voteUid).collection('voteItem').get() ]); listQs.forEach((element) async{ element.docs.forEach((docsElement) async { if(docsElement.data()!['count'] == 0){ print('카운트 0 인 문서의 아이디 >> ' + docsElement.id.toString()); } else { } }); }); }
Future.wait 를 사용하니 갱신된 값이 반영되어 콘솔에 카운트가 1이된 값은 찍히지않고 0인 값만 찍히게 되었다.
'flutter' 카테고리의 다른 글
[메모/스크랩] map 함수 (0) 2021.12.10 copyWith 함수 (0) 2021.12.07 [스크랩/메모] flutter 쓰레드, isolate, 이벤트루프 (0) 2021.11.29 dart mixin 클래스를 이용한 검증 로직 분리 (0) 2021.11.23 [메모] flutter 단위테스트, 테스트코드 관련 (0) 2021.11.20