소개
프로필
블로그 : 개발하는남자 블로그
유튜브 : 개발하는남자 유튜브
깃허브 : 개발하는남자 깃허브
소개
개발을 즐기는 사람이 되고 싶은 개발자.
안녕하세요 개발하는남자 개남입니다.
이력
2024.07 📚 개발하는남자의 핸즈온 플러터 책 출간
2023.07 💻 인프런 플러터 Bloc 응용 강의
2023.03 💻 인프런 플러터 Bloc 기초 강의
강의
수강평
- [플러터 상태관리] Bloc 마스터 코스 기초부터 응용까지!
- [Bloc 응용] 실전 앱 만들기 (책 리뷰 앱) : SNS 로그인, Firebase 적용, Bloc 상태 관리, GoRouter
- [Bloc 응용] 실전 앱 만들기 (책 리뷰 앱) : SNS 로그인, Firebase 적용, Bloc 상태 관리, GoRouter
- [Bloc 응용] 실전 앱 만들기 (책 리뷰 앱) : SNS 로그인, Firebase 적용, Bloc 상태 관리, GoRouter
- [Bloc 응용] 실전 앱 만들기 (책 리뷰 앱) : SNS 로그인, Firebase 적용, Bloc 상태 관리, GoRouter
게시글
질문&답변
비동기 처리방식
Q : 비동기 처리방식중 future와 stream이 있다고 하는데 도서리뷰앱에서는 비동기 처리방식 중 future을 사용하는건가요? stream을 사용하는건가요?A : 비동기 처리 방식에 두가지가 있지만 두가 성격은 다릅니다. 지속적인 변화를 감지하여 처리하는 방식이 stream이라 할 수 있고 단발적인 것은 future라고 보시면 되겠습니다. 도서리뷰앱에서는 bloc이라는 상태관리를 사용하고 있기때문에 bloc에서 상태변경에 따른 변경을 자동으로 처리 해주고 있어서 별도의 stream을 만들어 사용하지 않았습니다. 단지 한 곳에서 stream을 이용한 것이 있는데 그것은 firebase sns 로그인 상태 변경에 따른 변경사항을 처리하기 위해서 사용했습니다. 정리하자면 도서리뷰앱에서는 future로 비동기 처리를 주를 이루고 있고 stream은 sns 로그인 처리 부분에서 사용되었습니다. Q : 코드에서 await과 async을 사용한것을 봤을때 future방식인지 궁금합니다. 그리고 bloc이 stream 기반이라고 하는데 두가지 방식 다 사용된건지 궁금합니다.A : Future를 사용할때는 async로 만들고 사용하는쪽에서 동기 방식으로 만드려고 하면 await을 사용하게 됩니다. Stream의 경우 async* 을 사용하고 사용하는 곳에서 구독하기 위해서는 stream.listen의 함수를 이용하게 됩니다. Bloc이 stream 기반이지만 어떻게 사용하느냐에 따라 단건으로 처리 할 수도 있고 지속적인 처리도 가능합니다. Q : widget_test부분에 사용된 await도 비동기 처리방식 중 하나인건가요?A : 네 맞습니다. await 키워드를 사용했다는 것만으로도 비동기 함수를 동기로 처리 하고 있구나 라고 이해하시면 되겠습니다.
- 0
- 3
- 53
질문&답변
애뮬레이터 동작안됨과 xcode 실행안됨
플러터 버전과 xCode 버전이 어떻게 되나요? 강의를 원활하게 따라가기 위해서는 플러터 버전 3.19.x 버전 혹은 그 이하 버전을 사용해야 합니다. 그리고 xCode 버전은 15.x버전으로 설치하시면 강의를 들으면서 학습하시는데 문제가 없을 것입니다. 만일 플러터 최신 버전을 이용하시고 xCode 최신 버전을 이용하시게 되면 라이브러리 등 호환성 문제로 강의를 듣는데 다소 어려움이 있을 것입니다. 이런 불편함을 드려서 죄송합니다. 아무래도 강의 제작시기가 1년전이다 보니 최신화 작업이 되지 않았습니다. 원활한 강의를 위해서 최신화 과정을 제작해야 하겠지만 지금 개인적인 사정으로 강의 제작에 어려움이 있는 상태라 양해 부탁드립니다.
- 0
- 1
- 38
질문&답변
기능별로 정리가 되지않아요
자동완성과 좌측의 폴더의 아이콘 모양을 말씀하시는것 같은데 확장 플러그인이 정상적으로 설치 되어있는지 확인이 필요합니다. 자동완성의 경우 Dart : https://marketplace.visualstudio.com/items?itemName=Dart-Code.dart-codeFlutter : https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutterAwesome Flutter Snippets : https://marketplace.visualstudio.com/items?itemName=Nash.awesome-flutter-snippets가 설치가 되어있어야 하고 좌측의 폴더 및 파일 아이콘 관련은 Material Icon Theme : https://marketplace.visualstudio.com/items?itemName=PKief.material-icon-theme을 설치해주시면 됩니다.
- 0
- 2
- 49
질문&답변
클래스 이름 동시 변경
Q : 클래스이름을 MyApp으로 변경했을때 해당되는 const다음 name 부분까지 MyApp으로 같이변경하는 단축키는 어떤건가요?A : https://marketplace.visualstudio.com/items?itemName=Nash.awesome-flutter-snippets확장 플러그인을 설치하시고 sta 축약어로 Stateless나 Stateful 위젯을 생성한다면 자동으로 처리가 됩니다. Q : 임포트하는걸 바로 검색하는것A : 오류나는 부분을 클릭한 뒤에 Mac 기준 : Command + . 누르시면 됩니다. Window 기준 : Ctrl + . 누르면 됩니다. 단축키 말고 마우스로도 가능한데(사진) 오류나는 부분에 커서를 위치하면 전구 아이콘이 뜨게 됩니다, 그걸 클릭해도 가능합니다.
- 0
- 2
- 34
질문&답변
단축키옵션
https://marketplace.visualstudio.com/items?itemName=Nash.awesome-flutter-snippets위 VSCode 확장플러그인을 설치하시면 됩니다.
- 0
- 2
- 33
질문&답변
의존성 세팅이 끝나면
코드는 항상 저장해야 합니다. 그래야 적용됩니다.
- 0
- 1
- 21
질문&답변
플러터 설치
안녕하세요 플러터 설치의 경우 아래 링크에서 설치 하시면 되겠습니다. https://flutter-ko.dev/get-started/install/macos
- 0
- 2
- 49
질문&답변
goRouter
인프런 AI가 잘 정리를 해줬네요 🙂 여기서 제 의견을 드리자면 이미 잘 사용중이고 문제 없이 Get의 toNamed 방식을 사용하고 있다면 GoRouter로 리펙토링을 할 필요 없다고 생각합니다. 저도 여러 프로젝트에서 Getx의 Route인 toNamed 방식으로 사용하고 있는데 어느정도 규모가 있더라도 큰 문제 되지 않습니다.
- 0
- 2
- 56
질문&답변
appBar 텍스트 컬러 적용이 안돼요!
안녕하세요 캡쳐하신 이미지대로 작성하셨는데도 글색상이 흰색으로 보이지 않는다는 말씀이실까요? app.dart 파일과 detail.dart 파일을 보내주시면 검토해보겠습니다. 감사합니다.
- 0
- 1
- 71
질문&답변
모델 객체에 대해
모델설계를할때 유연하게 설계를할필요가 있습니다 질문주신것처럼 원래 데이터에 null이 있으면안되지 안나라고 하셨는데 맞습니다 api로 전달받은 데이터는 null이 오면 안되겠죠 하지만 네트워트 통신이고 서버 상태에 따라 어떻게 데이터가 들어오게 될지 보장하기 어렵습니다. 또한 시간에 지남에 따라 api 스펙이달라짐으로인해 특정 field가 더이상 보내주지 않는다라고 한다면 이런 경우를 대비해 필드를 null 가능하게 설계하면 예상치 못한 오류를 방지할 수 있습니다
- 0
- 1
- 112