전체 글 (36) 썸네일형 리스트형 [Flutter.250319] 이상한 키보드 에러를 발견하여 고쳐야한다 애플리케이션의 사용자 권한에는 현재 세 종류가 있다: 멤버, 코치, 어드민. 물론 영어로 해 뒀다. member, coach, admin 이렇게. 보통 멤버 권한으로 앱을 사용하고, 매일 바뀌는 운동 등을 작성하고, 수정하고, 회원 기록을 입력하고 하는거는 coach, 아니면 admin이 해야한다. member는 그냥 게시된 글을 보기만 할 수 있으니 수정할 일이 없다. 작성할 일도 없고.어느날 admin 권한을 넣어서 앱 내용을 좀 채워보려 했더니, 키보드가 등장하면서 화면의 90%를 먹어버리는 것을 발견하였다.이런 예상치 못한 변이 있나. 에러 1. 글을 작성하는 페이지에서키보드가 등장하면 이렇게 가려져 버리는 것이다. 이러한 에러를 사전에 발견하지 못한 이유가 있다.에뮬레이터로 테스트하면서 개발할.. [Flutter.250222] 플러터 작업을 ios 빌드하기 전에도 인터넷이랑 강의 보면서 했는데다시 하려니 기억이 안나서이런건 블로그에 작성해두면 더 좋겠다 싶었다. 우선 앱스토어 계정이랑, 모든 준비는 다 끝냈고, 빌드파일 올리는것만 남은 상태라고 가정하겠다. 우선 플러터 작업 디렉토리로 가서 터미널에`flutter build ios --release` 그러면 터미널에 `Runnint pod install...`-> `Runnig Xcode build...`이런게 나오고 잘 끝나면 `Built build/ios/iphones/Runner.app`이렇게 출력된다. 이제 Xcode에서 내 프로젝트를 연다. Fluttter 프로젝트 안에 `ios`디렉토리가 있는데, 거기를 열면 된다. `Product>Archive` 이렇게 하면 된다. Xcode에서 바로 Di.. [Flutter.250217] 전화번호 로그인이 테스트플라이트에서는 왜 안되는거야 분명히 되었단 말이다.내가 수도 없이 코드 작성하고 아이폰 시뮬레이터에서 매번 확인했단 말이다. 그런데 테스트 플라이트 앱을 받으니 이건 뭐람 로그인부터가 안되는 것이다. 그래서 왜 로그인이 안될까, 찾아봤다. 다양한 이유가 있을 수 있었다. 차근 차근.,, 하나씩. 1. 깃헙 레포를 처음에 public으로 작업했다. 그래서 firebase 설정 파일들을 전부 `.gitignore`에 넣어서 숨김 처리해 뒀었다. 그래서인가, 싶어 해당 파일들을 그냥 다 숨김처리를 취소했다. 지금은 private 레포로 작업중이기 때문이다. 2. Xcode로 가서 Runner-> Build Phases -> Copy BVundle Resources 아래에 `GoogleService-Info.plist`가 잘 있나 확인해.. [Flutter.250210] 유저의 망령이 떠돌아다니는가! 로그아웃이 되어야 하는데 안된다.앱을 등록하려면 로그아웃, 회원탈퇴 기능이 구현 되어야 승인이 나는데, 그래서 로그아웃, 회원탈퇴를 시키려는데안되는 것이다. 이유를 찾은 것 같다. 장장 이틀 동안 찾아 헤맸다. 내가 만들고 있는 `my_page`에서는 하위 페이지로 `n-RM` 페이지를 가지고 있다.찾아보니 하위 페이지에서 `loadCurrentUser()` 하면서 캐시된 유저 정보를 다시 갖고왔던게 아닌가 싶다. 사실 지금 해결의 실마리를 찾은 것 같아 두근거려서실행을 못해보고우선 블로그를 적고 있는 것이다. 왜냐면 이게 실행이 잘 되면, 나는 또 이 블로그 글 작성하는 것을 등한시할 것이기 때문이다. 아 이거 냄새가 난다. 냄새가 나.버그의 냄새를 좇아서 여기까지 온 나에게 칭찬을 해 주고 싶군. .. [openAI api.250205] firebase functions deploy 성공기 (feat. openAI 인스턴스를 생성하는 적절한 시점) 아 도무지 에러가 안잡혀서, 지난 에러에 대해 글을 쓰기로 했다. 짤막하게. openAI api를 쓰려면 api key가 필요하다. 아주 소중한 api key. 처음에는 코드를 이렇게 썼었다. const functions = require("firebase-functions");const admin = require("firebase-admin");const { onDocumentWritten } = require("firebase-functions/v2/firestore");const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY, }); 그랬더니, 이 함수를 firebase functions에 deploy 하려고 `firebase depl.. [openAI api.250203] 돈을 내 보았다 함수 결과 값을 받아보려고 유료 API 결제를 하였다. 우선 10달러 넣어두었고, 5달러 이하로 떨어질 때마다 10달러씩 충전하게 해 두었다. 이런 아름다운 자본주의 세상, 모든 어여쁜 것에는 돈이 드나니. https://platform.openai.com/docs/quickstart 챗GPT는 잘 써왔는데, OPEN AI api 결제는 처음 해 본다. 둘은 별개다. 돈을 받아내기 위해서인지, 굉장히 친절한 설명으로 가이드 되어 있는 것을 알 수 있다. 1.https://platform.openai.com/api-keys 여기에 가서, api 키를 만든다. 우상단에 보면 'Create new secret key' 버튼이 있다.이 때 생성되는 api 키는 다시 볼 수 없다. 잘 복사해 둔다. 2.터미널로 가서, .zshrc 파일.. [Flutter.250202] 수많은 에러 안에서 살아남기 위한 허우적 feat.Firebase functions 그렇다, 쓸 거리가 너무 많아서 도무지 글을 쓰는 것을 시작할 수 없었다.이것은 마치 삼류 소설 인트로 같다고 생각하고 소설을 읽은지 오래되었으니 아무래도 굉장히 아웃데이티드 된 개 구린 인트로일 것이다. 흑흑 참신하게 흑흑 좋네내 마음이다 흑흑흑 하는 내 마음 아니 도대체 에러 없는 날이 없는것이다.이렇게 하면 이러한 에러가 나고저렇게 하면 저러한 에러가 나고영어를 잘 한다고 생각하며 사는데 (한국말도 못하니까 비슷하다) 영어 에러 메세지는 왜이리 안 읽히고 읽기도 싫은지그냥 쫙 다 긁어서 구글에 검색해본다.그러면 이제 스택 오버플로우에 같은 에러에 고민했던 사람의 글이 최상단에 노출되고그걸 읽어보는데 또 영어야그러니까 또 집중해서 읽고 이러는 날들이다. 아니 왜 또 새벽엔 잠이 안오고 그래서 컴.. [Flutter.250115] ListView와 ListView.builder의 차이 리스트를 만들 때 사용된다는 공통점이 있지만, ListView와 ListView.builder 사이에는 차이점이 있다.ListView 같은 경우는 리스트를 한번에 만들어버리기 때문에, 만들어야 할 리스트의 양이 많으면 버벅이는 현상이 발생할 수 있다.반면에 ListView.builder 같은 경우는 visible, 딱 보이는 양 부터 만들고, 요청이 오는 것에 따라 리스트 아이템을 만들어서 보여주기 때문에, 앞서 말한 많은 양의 리스트를 만들어야 하는 상황에 적합하다. 공식 문서에도 다음과 같은 표현으로 설명되어 있다. (https://api.flutter.dev/flutter/widgets/ListView-class.html) 더보기The ListView.builder constructor takes .. 이전 1 2 3 4 5 다음 목록 더보기