목록전체 글 (214)
파파비의 블로그
1) DB 규칙 수정 이제 읽고 쓰는 것은 auth 인증을 받은 유저만 할 수 있다. 이 규칙은 auth인증을 받은 유저는 무엇이든 읽고, 쓰고 할 수 있기 때문에 product용보단 그냥 데모용으로 생각해야한다. 2) Auth인증 사용하겠다고 설정 Firebase Auth가서 이메일/비번을 사용하도록 설정해둔다. 준비완료 ^^
처음에 인증(가입? ) 같은 절차를 받으면 서버에서는 서버의 알고리즘 및 private key를 이용하여 토큰을 발급해준다. 우리는 해당 토큰을 디바이스에 저장하고, request를 할 때마다 토큰을 함께 첨부한다. 만약 request에 토큰이 없다면 서버가 인증한 유저가 아니므로 거절을 당한다. 세션은 웹 인증방식인데, 저기 그림에서는 플러터는 그런 방식을 사용하지 않는다는 의미로 나온 것이다.
Future가 있는 위젯을 만들기위해선 Stateful 위젯으로 해둔 다음에, 로딩이 완료되면 그 값에 따라 setstate을 다시 해야했다. 코드가 굉장히 지저분해지고, Stateful위젯이 강제된다는 점에서 불편하기도 했다. 이를 극복하기 위해 존재하는 위젯이 있는 바로 FutureBuilder를 사용하는 것이다. FutureBuilder는 3가지의 요소를 갖는다. child, future, builder이다. future에 우리가 원하는 Future를 return하는 메소드를 넣고, builder에는 context와 snapshot을 인수로 갖고 위젯을 리턴하는 메소드를 넣으면된다. (snapshot은 Future의 return 값을 의미한다.) 그래서 future의 값에 따라 원하는데로 위젯을 b..
객체 리스트 전부를 저장하기 map, list는 json format이 가능하다. 만약 우리가 만든 오브젝트들의 리스트를 firebase에 저장하고 싶다면 그 오브젝트 각각을 map으로 변환 시켜야한다. 리스트는 .map이라는 메소드가 있다. 리스트의 모든 원소들을 한번씩 돌리면서 새로운 iterable를 만들어낸다. 우리는 .map을 이용하면 각 객체들을 map으로 바꾼 List를 만들어낼 수 있다. 이러면 json화가 가능하고, 그대로 firebase에 저장이 가능해진다. Time은 ToString()보다, 변환이 편리한 ISO tostring으로 DateTime은 그대로 json화가 되지 않는다. 그래서 string으로 변환이 필요한데, ToString보다 dateTime으로 변환이 편리한 Iso8..
try-catch는 생략했다. 여기서 body 부분에 자꾸 json.encode 를 빼먹고 고생을 했다. 절대 까먹지 말자.
데이터를 지우는 것은 직관적이고 쉽다. 해당 url를 제공하고, 여기 지워줘! 하면 끝이다. 물론 try-catch나 error 처리를 해주면서 말이다. Optimistic Updating 하지만, 그것보다 더 발전된 형태가 있는데, Optimistic Updating이란 방법이다. 데이터를 지울 때는 보통 기기 메모리 내부적으로도 지우고, db상에서도 지운다 메모리 내부 data를 지우고나서, 그리고 db상 지우는게 실패할 경우 띠용?하는 상황이 생긴다. 그래서 지웠던 data를 다시 살릴 수 있도록 장치를 해두는 것이 "Optimistic Updating"이다. 여기 코드를 보자. 1. 먼저 url은 정확한 타겟을 가르킨다. id를 동적으로 제공하면서 말이다. 2. 그 다음 덩어리는, 지우려는 아이템..
1. url이 동적으로 바뀌면서 final로 표시를 바꾸었다. 2. patch는 data를 보내는 것이기에 보낼 data를 지정하는 body 부분을 채워넣어야 한다. - 이 때 역시, Map을 encode해서 보내면 된다. 3. patch는 업데이트 형식이라서, 새로운 data는 추가되고, 있던 data는 덮어쓰기가 된다. - 따라서 저기서 key값을 잘못입력해서 기존 key와 다르다면 data는 새로 추가되며, - isFavorite에 관한 데이터는 추가하지 않는데, 그래서 그냥 db상에 그대로 존재하게 된다. (보낸 부분들만 업데이트 되거나 덮어써지거나 한다. 안건드린 것들은 그대로 남아있는다) 4. asyn, await을 절대 잊지 말며 그에 따른 try-catch 역시 잊지 말라 (여기선 생략함)