• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 Flutter 게시판 메소드의 실행 순서(?) 문제

메소드의 실행 순서(?) 문제

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 글쓴이
  • #28316

    JS
    참가자

    파이어스토어와 파이어베이스 스토리지를 사용해서 이미지와 함께 글을 올릴 수 있는 기능을 개발해보고 있습니다.(SNS 느낌)

    String url = '' 로 변수를 선언해서

    uploadImage() async {
    FirebaseStorage storage = FirebaseStorage.instance;
    Reference ref = storage.ref().child('news_image/${DateTime.now().toString()}');
    UploadTask uploadTask = ref.putFile(userImage);
    uploadTask.then((res) async {
    url = await res.ref.getDownloadURL();
    });
    }

    이와 같이 'url'에 파일 링크를 담는 메소드를 선언했습니다.

    print로 확인해본 결과 링크가 잘 담아졌지만..

    업로드 버튼을 눌렀을 때 

    onPressed: () {
    if(userImage != null) {
    uploadImage();
    }
    putData();
    sendData(newData);
    Navigator.pop(context);
    }

    이와 같이 실행되도록 했습니다.

    여기서 putData()는 

    putData() {
    newData.add(inputData1.text.toString());
    newData.add(inputData2.text.toString());
    newData.add(tag1);
    newData.add(tag2);
    newData.add(url);
    }

    이와 같이 한 도큐먼트로 업로드할 정보들을 newData라는 리스트에 담는 메소드이고,

    sendData()는 firestore.collection.add()를 실행하는 메소드입니다.

    문제는 저 위의 onPressed(){} 내에서 putData()가 uploadImage()보다 먼저 실행돼서인지 업로드된 도큐먼트를 확인해보면 url이 비어 있습니다...

    uploadImage가 완료된 이후에 putData가 실행되게 하려면 어떻게 해결해야 할까요...ㅠㅠ

    #28325

    codingapple
    키 마스터

    uploadImage 왼쪽에 await 붙여보거나 uploadImage함수 안으로 putData를 옮겨봅시다

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠