선생님, 순한 맛 부터 조금 매운맛 강좌까지 정주행하고 처음으로 댓글 남깁니다. 채팅앱까지는 강좌가 다 올라와있는 줄 알았는데 현재진행중이라 기다려야 한다는게 조금 아쉽네요^^; 하지만 너무나 다음 강의가 기다려질만큼 좋은 강의입니다! 저는 이쪽 업계와 전혀 관계 없는 직업을 가진 사람이지만, 오래전부터 관심 갖던 프로그래밍에 한참 빠져 있는데요, 프론트엔드, 백엔드 기초 정도 독학하고 간단한 웹사이트 배포 정도 해본 뒤, 데스크탑 프로그램 하나 만들어보고 싶어서 이리 저리 방법을 찾다가 여기까지 오게 됐습니다. 프로그래밍 처음 입문할 때 크게 도움받았던 생활코딩 이후 가장 만족하고 감사하다는 마음이 드는 강의입니다. 선생님, 건강하시고요, 올해도 좋은 일, 좋은 만남 많이 생기시길 빕니다!!!
아, 그리고 질문이 두 가지 있습니다. 1. 새 계정 signup을 해도 firestore database에 사용자명과 이메일 저장이 안되던데, 제가 이해한 바가 맞다면, 규칙 부분 두 번째에서 read 외에 create 권한까지 허용해줘야 하는 것 아닌가 싶습니다. 2. showSpinner 관련해서, 현재 사인인이나 사인업 과정에서 문제가 있거나 에러가 발생했을 때 spinner가 계속 돌거나 앱이 멈추는 것 같은데, 혹시 저만 그런건지 모르겠습니다. 일단 signup, signin 양쪽의 catch{} 부분에 showSpinner 값을 false로 바꾸는 부분을 추가해봤습니다. 에러 발생(이미 가입, 잘못된 글자 수 등등) 시 spinner는 사라지는데, signup 할 때 입력 내용이나 형식에 문제가 없는데도 디버거가 에러를 출력합니다(챗스크린으로 넘어가기는 합니다). 에러 내용은 setState() called after dispose():
This error happens if you call setState() on a State object for a widget that no longer appears in the widget tree (e.g., whose parent widget no longer includes the widget in its build). This error can occur when code calls setState() from a timer or an animation callback. 이미 위젯트리에서 사라진 위젯에 대한 스테이트를 대상으로 setState()를 호출했다는 의미인 듯 한데... 아직 주요 구조나 작동원리에 대한 이해가 부족한 듯 합니다. ㅠㅠ
감사합니다. 그리고 YS님도 새해에는 행복한 일들만 가득하시길 바라겠습니다. 아울러, 앱과 웹을 동시에 만들 수 있는 flutter의 선택은 정말 잘 한 것이라 말씀드리고 싶습니다. 물론 아직 웹 분야에서는 다소 부족한 점들이 있으나 조만간 하나하나 해결되리라 확신하고 있습니다. 저도 좀 더 좋은 강좌를 제작하기 위해서 노력하겠습니다.
@@YS-nb6nv 파이어스토어에는 말 그대로 데이터만이 저장됩니다. 새로운 사용자 등록 등과 관련해서는 authentication 항목에서 확인하면 됩니다. 그리고 spinner가 에러 발생시 계속 도는 것은 catch구문 안에 setState로 showSpinner = false; 를 한 번 더 넣어주시기 바랍니다. 에러발생시 자동으로 catch구문으로 빠지기 때문에 여기에서도 한 번 더 설정을 해주어야 합니다.
셰프님 강좌를 보면서 항상 느끼는거지만 많은것을 배우게 됩니다. 간간히 기본적인 개념도 잘 설명을 해주셔서 언어에 대한 이해도 쌓여갑니다. 바쁘신데도 시간을 내어서 이런 강좌를 틈틈히 올려서 주셔서 항상 감사드립니다. 유료 강의 이야기가 나와서 그런데 유료강좌가 부담스럽고 시간내기가 힘이 든다면 커피한잔이라도 사드리고 싶은 구독자님들의 마음이 전달될수 있도록 기부형태나 채널가입 서비스를 하면 어떨지 제안드리고 싶네요~~~ 질적인 강의는 채널을 통해서 오픈하는것도 하나의 방법이라고 생각됩니다. 어떤 방법이 좋을지는 모르겠으나 셰프님 높은 퀄리티 강좌에 커피한잔 정도를 사드리고 싶은 마음이 앞서네요
세세한 부분까지 신경 써주셔서 정말 감사합니다. 처음에는 flutter를 좀 더 널리 알리고 싶은 개인적인 바램에서 강좌를 시작했는데 이제는 점점 더 책임감이 느껴지네요.^^; 강좌의 지속성 등을 위해서 조언해주신 부분들이 필요한 시점이 온다면 저도 고민을 해보겠습니다. 사실 주변에서 super thanks 기능 정도는 사용해도 되지 않겠냐는 분들도 계십니다. 광고야 어차피 구글측에서 일방적으로 붙여서 수익을 가져간다기에 달기는 했습니다만 아직 그 외 사항들에 대해서는 고민은 해본 적이 없는 거 같습니다. 다시 한 번 진심 어린 댓글에 감사드리고 더 좋은 강좌를 위해서 노력하겠습니다. ^^
코딩셰프님 안녕하세요. 순한맛부터 정주행하며 잘 배우고 있습니다. firebase 권한 설정에 대해 좀 더 연습해 보고 있는데요. 현재 인증된 user의 uid를 비교해서 동일할 때만 채팅 읽기 및 쓰기 권한을 세팅하니 에뮬레이터 리로드 시 Null check operator used on a null value 오류가 발생합니다. chat 컬렉션의 문서마다 uid 필드를 추가하고 규칙은 아래와 같이 수정했습니다. match /chat /{uid} { allow read, write: if request.auth != null && request.auth.uid == uid; } > 이렇게 작성하니 null value 오류가 발생하고, match /chat /{uid} { allow read, write: if request.auth != null && request.auth.uid == 실제 문서의 uid 직접 입력; } > 이렇게 작성하니 오류가 발생하지 않더라구요. 혼자 생각하기론 request.auth.uid == uid에서 문서 필드 내의 uid 값을 제대로 받아오지 못하는 걸로 보이는데, 어느 부분을 수정해야될지 감이 안잡히네요 ㅠ 혹시 잘못된 부분이 있는지 알려주시면 감사하겠습니다. 그리고 chat 컬렉션의 문서 내에 다양한 필드가 있는데 request.auth.uid == uid라고 입력하면 uid 필드의 값을 찾는 건지도 궁금합니다. 잘 안돼서 구글링을 해보니 resource.data.필드명 방식으로도 나오는 것 같아서요. 추가적으로 chat 컬렉션 내의 모든 문서에는 uid 필드가 정상 생성되어 있습니다.
정말 좋은 강좌 감사드립니다. 이번 강좌와 크게 관련은 없지만, 강좌를 보며 공부중에 main_screen 코드가 정말 길고 수정부분이 있을때마다 찾기가 힘든 상황이 있습니다. 위젯폴더를 새로 만들어 넣어놓고 가져옴으로써 재사용, 커스텀, 수정을 더 용이하게 할수있는 방법을 알고싶습니다!!
개인적으로 말씀을 드리고 싶습니다. 코딩셰프님의 무료강의는 타 유튜버나, 인강과 비슷하다고 생각합니다. 실제로 많은 도움이 되기도 했구요. 개인적으로 코딩셰프님이 유로로 컨텐츠를 만들기를 바랍니다. 전에 영상에 답글에서 flutter 개발자 양성을 위해서 무료로 영상을 제작하시는 건 알고 있지만, 코딩셰프님에 영상제작의 오히려 유로가 더 도움이 되기도 하고, 다른 사용자들도 유로라도 볼 정도의 컨텐츠입니다. 영상제작에 힘써주는 모습에 너무 도움이 되고 싶기도 하네요. 영상 잘 봤습니다.
먼저 진심 어린 조언 감사합니다. 사실 종종 유료 컨텐츠 제작에 대한 문의를 받곤합니다. 다만, 유료 컨텐츠를 제작하기 위해서는 거의 전업을 하다시피 작업을 해야 하는데 제 사정상 아직 그러기가 쉽지 않습니다. 하지만 현재의 일들이 조금 정리가 된 후에는 한 번 진지하게 고민해 보도록 하겠습니다. 감사합니다.
파이어베이스로 로그인을 구현할 때 반드시 비밀번호를 6개 이상 입력해야 합니다. 그리고 spinner 무한로딩은 catch(e){ setState(() { showSpinner = false; }); print(e); } 이처럼 setState메서드를 추가해 주기 바랍니다.
@@codingchef 감사합니다! 그럼 혹시 로그아웃 버튼을 눌렀을때 D/FirebaseAuth(29713): Notifying id token listeners about a sign-out event. D/FirebaseAuth(29713): Notifying auth state listeners about a sign-out event. 이런 메세지가 뜨면서 로그아웃을 할 수 없다고 하는데 화면은 로그인 페이지로 가지고 다시 로그인 하려고 하면 W/System (11116): Ignoring header X-Firebase-Locale because its value was null. D/TrafficStats(11116): tagSocket(119) with statsTag=0xffffffff, statsUid=-1 I/flutter (11116): [firebase_auth/email-already-in-use] The email address is already in use by another account. 이렇게 나오는데 보니까 누군가 이 메일로 이미 사용중이다 라는거 같던데 어떻게 하면 될까요 로그아웃이 제대로 되지 않는거 같아요ㅠㅠ
앱개발 진입장벽이 높아 망설이다가 플러터를 알게된 후 쉐프님 좋은 강의 덕분에 빠르게 잘 배우고 있습니다. 감사합니다.
쉐프님 좋은강의 감사합니다~ 지난 강의 이후로 또 기다리고 있었습니다.
선생님, 순한 맛 부터 조금 매운맛 강좌까지 정주행하고 처음으로 댓글 남깁니다. 채팅앱까지는 강좌가 다 올라와있는 줄 알았는데 현재진행중이라 기다려야 한다는게 조금 아쉽네요^^; 하지만 너무나 다음 강의가 기다려질만큼 좋은 강의입니다! 저는 이쪽 업계와 전혀 관계 없는 직업을 가진 사람이지만, 오래전부터 관심 갖던 프로그래밍에 한참 빠져 있는데요, 프론트엔드, 백엔드 기초 정도 독학하고 간단한 웹사이트 배포 정도 해본 뒤, 데스크탑 프로그램 하나 만들어보고 싶어서 이리 저리 방법을 찾다가 여기까지 오게 됐습니다. 프로그래밍 처음 입문할 때 크게 도움받았던 생활코딩 이후 가장 만족하고 감사하다는 마음이 드는 강의입니다. 선생님, 건강하시고요, 올해도 좋은 일, 좋은 만남 많이 생기시길 빕니다!!!
아, 그리고 질문이 두 가지 있습니다.
1. 새 계정 signup을 해도 firestore database에 사용자명과 이메일 저장이 안되던데, 제가 이해한 바가 맞다면, 규칙 부분 두 번째에서 read 외에 create 권한까지 허용해줘야 하는 것 아닌가 싶습니다.
2. showSpinner 관련해서, 현재 사인인이나 사인업 과정에서 문제가 있거나 에러가 발생했을 때 spinner가 계속 돌거나 앱이 멈추는 것 같은데, 혹시 저만 그런건지 모르겠습니다. 일단 signup, signin 양쪽의 catch{} 부분에 showSpinner 값을 false로 바꾸는 부분을 추가해봤습니다. 에러 발생(이미 가입, 잘못된 글자 수 등등) 시 spinner는 사라지는데, signup 할 때 입력 내용이나 형식에 문제가 없는데도 디버거가 에러를 출력합니다(챗스크린으로 넘어가기는 합니다).
에러 내용은
setState() called after dispose():
This error happens if you call setState() on a State object for a widget that no longer appears in the widget tree (e.g., whose parent widget no longer includes the widget in its build). This error can occur when code calls setState() from a timer or an animation callback.
이미 위젯트리에서 사라진 위젯에 대한 스테이트를 대상으로 setState()를 호출했다는 의미인 듯 한데... 아직 주요 구조나 작동원리에 대한 이해가 부족한 듯 합니다. ㅠㅠ
감사합니다.
그리고 YS님도 새해에는 행복한 일들만 가득하시길 바라겠습니다.
아울러, 앱과 웹을 동시에 만들 수 있는 flutter의 선택은 정말 잘 한 것이라 말씀드리고 싶습니다.
물론 아직 웹 분야에서는 다소 부족한 점들이 있으나 조만간 하나하나 해결되리라 확신하고 있습니다.
저도 좀 더 좋은 강좌를 제작하기 위해서 노력하겠습니다.
@@YS-nb6nv 파이어스토어에는 말 그대로 데이터만이 저장됩니다. 새로운 사용자 등록 등과 관련해서는 authentication 항목에서 확인하면 됩니다.
그리고 spinner가 에러 발생시 계속 도는 것은 catch구문 안에 setState로 showSpinner = false; 를 한 번 더 넣어주시기 바랍니다.
에러발생시 자동으로 catch구문으로 빠지기 때문에 여기에서도 한 번 더 설정을 해주어야 합니다.
좋은 강의 너무 감사합니다 ~
아아아...채팅메세지 구독이 다음시간이라니...제일 신나는 부분에서 강의가 끝나버렸네요....ㅠㅠㅠㅠ
조만간 후속 강좌업데이트 됩니다.^^;
@@codingchef 기다리기 아쉬워서 이것저것 만지면서 시도중입니다 ㅎㅎㅎ 기다리고있을게요!!
저한테는 많이 매운맛이네요^^;; 하지만 코딩셰프님 강의는 늘 감사한 마음으로 듣고 있습니다.
잘보고있습니다 감사합니다👍
항상 감사합니다 끝까지 듣겠습니다.
셰프님 강좌를 보면서 항상 느끼는거지만 많은것을 배우게 됩니다.
간간히 기본적인 개념도 잘 설명을 해주셔서 언어에 대한 이해도 쌓여갑니다.
바쁘신데도 시간을 내어서 이런 강좌를 틈틈히 올려서 주셔서 항상 감사드립니다.
유료 강의 이야기가 나와서 그런데 유료강좌가 부담스럽고 시간내기가 힘이 든다면 커피한잔이라도 사드리고 싶은 구독자님들의 마음이 전달될수 있도록 기부형태나 채널가입 서비스를 하면 어떨지 제안드리고 싶네요~~~
질적인 강의는 채널을 통해서 오픈하는것도 하나의 방법이라고 생각됩니다.
어떤 방법이 좋을지는 모르겠으나 셰프님 높은 퀄리티 강좌에 커피한잔 정도를 사드리고 싶은 마음이 앞서네요
세세한 부분까지 신경 써주셔서 정말 감사합니다. 처음에는 flutter를 좀 더 널리 알리고 싶은 개인적인 바램에서 강좌를 시작했는데 이제는 점점 더 책임감이 느껴지네요.^^;
강좌의 지속성 등을 위해서 조언해주신 부분들이 필요한 시점이 온다면 저도 고민을 해보겠습니다. 사실 주변에서 super thanks 기능 정도는 사용해도 되지 않겠냐는 분들도 계십니다.
광고야 어차피 구글측에서 일방적으로 붙여서 수익을 가져간다기에 달기는 했습니다만 아직 그 외 사항들에 대해서는 고민은 해본 적이 없는 거 같습니다.
다시 한 번 진심 어린 댓글에 감사드리고 더 좋은 강좌를 위해서 노력하겠습니다. ^^
코딩셰프님 안녕하세요. 순한맛부터 정주행하며 잘 배우고 있습니다. firebase 권한 설정에 대해 좀 더 연습해 보고 있는데요.
현재 인증된 user의 uid를 비교해서 동일할 때만 채팅 읽기 및 쓰기 권한을 세팅하니 에뮬레이터 리로드 시 Null check operator used on a null value 오류가 발생합니다.
chat 컬렉션의 문서마다 uid 필드를 추가하고 규칙은 아래와 같이 수정했습니다.
match /chat /{uid} {
allow read, write: if request.auth != null && request.auth.uid == uid;
}
> 이렇게 작성하니 null value 오류가 발생하고,
match /chat /{uid} {
allow read, write: if request.auth != null && request.auth.uid == 실제 문서의 uid 직접 입력;
}
> 이렇게 작성하니 오류가 발생하지 않더라구요.
혼자 생각하기론 request.auth.uid == uid에서 문서 필드 내의 uid 값을 제대로 받아오지 못하는 걸로 보이는데, 어느 부분을 수정해야될지 감이 안잡히네요 ㅠ
혹시 잘못된 부분이 있는지 알려주시면 감사하겠습니다.
그리고 chat 컬렉션의 문서 내에 다양한 필드가 있는데 request.auth.uid == uid라고 입력하면 uid 필드의 값을 찾는 건지도 궁금합니다. 잘 안돼서 구글링을 해보니 resource.data.필드명 방식으로도 나오는 것 같아서요.
추가적으로 chat 컬렉션 내의 모든 문서에는 uid 필드가 정상 생성되어 있습니다.
저도 같은 오류를 겪고 있습니다ㅠㅜ 혹시 해결 하셨나요? 구글링도 해봐도 해결을 못하겠네요
감사합니다. 취미로 코딩을 해보다가 이 강의에서 자신을 얻고 채팅앱을 만들 수 있을 것 같습니다.
뭐든지 즐기는 사람을 이길 수 없다고 했는데 취미로 개발자를 하는 날이 빨리 오기를 바라겠습니다~
@@codingchef 감사합니다. 쉬운 용어와 설명으로 모두 따라할 수 있었습니다. 가능하다면 친구초대와 복수의 채팅 방 만드는 것도 강의해 주시면 고맙겠습니다.
@@gotgilApp 이 부분은 추후 매운 맛 강좌에서 다룰 예정입니다. provider나 getx등 아직 다룰 내용들이 많이 있어서요.
@@codingchef 와. 감사합니다. 쭉 복습하며 기다리겠습니다.
선생님 감사합니다
정말 좋은 강좌 감사드립니다.
이번 강좌와 크게 관련은 없지만,
강좌를 보며 공부중에 main_screen 코드가 정말 길고 수정부분이 있을때마다 찾기가 힘든 상황이 있습니다.
위젯폴더를 새로 만들어 넣어놓고 가져옴으로써 재사용, 커스텀, 수정을 더 용이하게 할수있는 방법을 알고싶습니다!!
코드리팩토링에 관해서는 아래 링크의 강의를 참고해 보기 바랍니다.
ruclips.net/video/tTA1Vxxi3mg/видео.html
시행착오도 있을 수 있지만 좋은 연습이 될 것입니다.
16:08 뒤로가기 버튼이 안생기는데 제가 뭘 빼먹은 걸까요?
뒤로가기 버튼은 push 메서드와 pop 메서드를 사용하면 자동 생성됩니다.
이 부분을 한 번 확인해 보기 바랍니다.
로그인 시에는 네비게이터 push 코드를 삭제해야 정상 작동하는데 왜 회원가입시에는 네비게이터push코드를 그대로 나둬도 정상인 이유가 무엇인가요?
개인적으로 말씀을 드리고 싶습니다. 코딩셰프님의 무료강의는 타 유튜버나, 인강과 비슷하다고 생각합니다. 실제로 많은 도움이 되기도 했구요. 개인적으로 코딩셰프님이 유로로 컨텐츠를 만들기를 바랍니다. 전에 영상에 답글에서 flutter 개발자 양성을 위해서 무료로 영상을 제작하시는 건 알고 있지만, 코딩셰프님에 영상제작의 오히려 유로가 더 도움이 되기도 하고, 다른 사용자들도 유로라도 볼 정도의 컨텐츠입니다. 영상제작에 힘써주는 모습에 너무 도움이 되고 싶기도 하네요. 영상 잘 봤습니다.
먼저 진심 어린 조언 감사합니다.
사실 종종 유료 컨텐츠 제작에 대한 문의를 받곤합니다. 다만, 유료 컨텐츠를 제작하기 위해서는 거의 전업을 하다시피 작업을 해야 하는데 제 사정상 아직 그러기가 쉽지 않습니다.
하지만 현재의 일들이 조금 정리가 된 후에는 한 번 진지하게 고민해 보도록 하겠습니다. 감사합니다.
쉐프님 강의 업로드 날짜는 몇일간격인가요? 정해진게 없나요?
바쁜 일정들이 있어서 답변이 늦었네요. 원래는 일주일 간격이었으나 현재는 제 개인적인 사정으로 정확한 간격을 두고 업로드하지는 못하고 있습니다.
@@codingchef 혹시 수강료지불하고 온라인강좌 찍으시거나 그러시는지요ㅜㅠ
강의보고싶어서요
코딩셰프님 제가 회원가입을 하다가 비밀번호를 6개 이상 입력하지 않아서 비밀번호 다시 입력하라는 메세지 뜨면서 spinner가 무한 로딩 되는 현상이 발생 했는데 어떻게 해야할까요
파이어베이스로 로그인을 구현할 때 반드시 비밀번호를 6개 이상 입력해야 합니다.
그리고 spinner 무한로딩은
catch(e){
setState(() {
showSpinner = false;
});
print(e);
}
이처럼 setState메서드를 추가해 주기 바랍니다.
@@codingchef 감사합니다! 그럼 혹시 로그아웃 버튼을 눌렀을때 D/FirebaseAuth(29713): Notifying id token listeners about a sign-out event.
D/FirebaseAuth(29713): Notifying auth state listeners about a sign-out event.
이런 메세지가 뜨면서 로그아웃을 할 수 없다고 하는데 화면은 로그인 페이지로 가지고 다시 로그인 하려고 하면
W/System (11116): Ignoring header X-Firebase-Locale because its value was null.
D/TrafficStats(11116): tagSocket(119) with statsTag=0xffffffff, statsUid=-1
I/flutter (11116): [firebase_auth/email-already-in-use] The email address is already in use by another account.
이렇게 나오는데 보니까 누군가 이 메일로 이미 사용중이다 라는거 같던데 어떻게 하면 될까요 로그아웃이 제대로 되지 않는거 같아요ㅠㅠ
코딩셰프님....저는 스마트폰으로 디버깅하는데 이게 하얀색화면만 나오더라구요 해결을 어떻게 해야될까요?ㅠ
그렇다면 이전 강좌까지는 앱이 잘 실행이 되었다는 의미인거 같은데, 에러 메시지를 복사해서 좀 보여주기 바랍니다. 그리고 제가 동영상 설명에서 공유해 드린 제 강좌 프로젝트도 한 번 참고해서 코드상의 입력 에러가 없는지도 살펴보시기 바랍니다.