ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Stream과 Future
    flutter 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인 값만 찍히게 되었다.

     

     

Designed by Tistory.