본문 바로가기

Flutter

(3)
Flutter - 사진 업로드 비동기 처리 문제 : FireStorage에 사진을 업로드하고 그 사진을 firebase에 업로드하고 싶었는데 사진 업로드가 시간이 걸려서 AddPage에서 ListPage로 넘어가는 체감 시간이 너무 길었다. 과정 : 비동기식으로 파일업로드가 되어야 그 밑에 코드가 실행이 됐었는데 화면을 닫는 코드만 await 위에 작성했다. Future uploadFile() async { StorageReference storageReference = FirebaseStorage.instance .ref() .child('upload/${path.basename(_image.path)}'); StorageUploadTask uploadTask = storageReference.putFile(_image); Navigator.p..
Flutter - StreamBuilder 데이터 변경시 화면 다시 그리기 원하는 동작 목록에서 아이템을 클릭하면 해당 아이템의 정보를 가지고 Detail 페이지로 넘어간다. 처음에는 타이틀 등 정보를 String값으로 담아서 화면 전환을 시켰다. 보이고자하는 요소들은 다 보여줄 수 있었지만 버튼 사용이 불가능했다. 이전 페이지와 동일한 동작이 필요했다. 처음 시도 그 다음에는 내가 필요한 객체를 넘겼다. 버튼 사용시 동작하는 함수도 전역으로 옮겼다. 버튼 사용이 가능은 했는데 결과를 화면에 바로 반영할 수 없었다. 문제 이전 화면에서는 버튼을 클릭하면 바로 그에 맞게 화면이 바뀐다. 하지만 detail에서는 그렇지 않다. 이유는 StreamBuilder를 사용하지 않았기 때문이다. stream에 firebase의 db document의 값을 연결해두는 것이다. 목록 화면에서는..
Flutter - Firestore orderBy 조건 여러개 설정하기 문제 : 파이어베이스에 저장된 DB로부터 데이터를 가져오는데 orderBy에 대한 조건을 2개 쓰고 싶었다. 일단 bool값을 우선으로 해서 false인 것을 상단에 위치시키고 그 안에서 날짜 순으로 배열하고 싶었다. 파이어베이스의 인스턴스로부터 가져오는 stream에 orderBy 조건을 두개 넣어보았다. stream: Firestore.instance .collection('todo') .orderBy('isDone') .orderBy("expired") 내가 원하는 순서로 정렬은 됐는데, 변경된 데이터 값이 바로 화면에 적용되지 않았다. 검색해보니 orderBy를 여러개 쓰거나 where문을 같이 쓸 경우 충돌이 난다고 한다... stream에서 bool을 기준으로 orderBy를 하고 밑에서 co..