프로필
블로그 : 개발하는남자 블로그
유튜브 : 개발하는남자 유튜브
깃허브 : 개발하는남자 깃허브
소개
개발을 즐기는 사람이 되고 싶은 개발자.
안녕하세요 개발하는남자 개남입니다.
이력
2024.07 📚 개발하는남자의 핸즈온 플러터 책 출간
2023.07 💻 인프런 플러터 Bloc 응용 강의
2023.03 💻 인프런 플러터 Bloc 기초 강의
강의
수강평
- [Bloc 응용] 실전 앱 만들기 (책 리뷰 앱) : SNS 로그인, Firebase 적용, Bloc 상태 관리, GoRouter
- [플러터 상태관리] Bloc 마스터 코스 기초부터 응용까지!
- [Bloc 응용] 실전 앱 만들기 (책 리뷰 앱) : SNS 로그인, Firebase 적용, Bloc 상태 관리, GoRouter
게시글
질문&답변
오류..
안녕하세요 보내주신 메일도 확인하였습니다. 해당문제는 강의를 듣고 계시는 시점과 제가 작업을 했던 시기와 플러터 버전의 차이로 사용되는 라이브러리 역시 버전 차이가 있어서 발생되는 문제입니다. 특별히 보내주신 문제 부분은 hydrated_bloc 버전차이가 ^10.0.0 로 진행중이십니다.확인방법은 pubspec.yaml파일을 확인해보시면 알 수 있으며 단순히 버전문제를 대응하기 위해서는 bloc 관련 버전을 다음과 같이 맞춰주시면 되겠습니다. bloc: 8.1.1 flutter_bloc: 8.1.2 hydrated_bloc: 9.1.1위 처럼 고정하시고 flutter clean 후 flutter pub get 하시면 문제가 해결되실 것이며 이후 강의를 들으시는 것과 큰문제는 없으실 것입니다. 만일 플러터 최신버전으로 강의를 수강하길 원하신다면 발생되는 문제 파일인 main.dart 파일의 hydrated init 하는 부분의 소스코드를 다음과 같이 수정해주시면 되겠습니다. HydratedBloc.storage = await HydratedStorage.build( storageDirectory: HydratedStorageDirectory( (await getTemporaryDirectory()).path, ), );아무래도 강의가 최신화로 업데이트 되지 못해 수강하시는 분들에게 어려움을 겪게해드린것 같아 죄송한 마음입니다. 개인정인 사정으로 최신화 대응을 하지 못하고 있는데 조만한 플러터 최신버전에 맞게 추가 업데이트 진행하여 업데이트 하도록 하겠습니다. 다시한번 불편함을 드려서 죄송합니다. 감사합니다. PS: 추가적으로 강의 들으시면서 발생되는 문제에 대해서 메일 주시면 빠른시일내로 확인하여 답변 드리도록 하겠습니다.
- 0
- 2
- 68
질문&답변
bloc 이벤트 클래스 생성할 때 getter 를 override 하는 이유는 뭔가요?
질문에 답변을 드리겠습니다. 우선, 오버라이드(Override)는 부모 클래스로부터 상속받은 메서드나 속성을 자식 클래스에서 재정의할 필요가 있을 때 사용됩니다. 그래서 부모 클래스인 CountEvent 클래스를 보면 abstract 클래스로 정의 되어있고 이 클래스 역시 extends 상속을 Equatable를 받고 있습니다. Equatable을 사용하기 위해서는 반드시 정의해줘야 하는 것이 있는데 그것이 바로 props 입니다. Equatable은 객체간 비교를 손쉽게 해주는 라이브러리입니다. Dart에서는 기본적으로 == 연산자를 사용하면 객체의 참조를 비교하는데, Equatable을 사용하면 props 배열에 정의된 멤버 변수들을 비교하여 값이 같으면 같은 객체로 인식할 수 있도록 도와줍니다. 따라서 props 정의는 필수적으로 해줘야 하는데 abstract 클래스로 CountEvent를 만들어줬기 때문에 props 정의를 자식 요소들에게 책임을 넘기게 된 것입니다. 즉, CountEvent를 상속받는 클래스들은 반드시 props를 정의해야만 사용이 가능하고 그렇게 정의하므로 인해 같은 이벤트가 여러 번 발생해도 동일한 이벤트로 인식할 수 있어 BLoC 패턴에서 불필요한 상태 변화를 방지할 수 있습니다. 질문에 답이 되었으면 좋겠습니다. 감사합니다.
- 0
- 1
- 44
질문&답변
혹시 웹에서 디버깅하시는분들은
좋은 정보 공유 감사합니다 🙂
- 0
- 1
- 194
질문&답변
비동기 처리방식
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
- 117
질문&답변
애뮬레이터 동작안됨과 xcode 실행안됨
플러터 버전과 xCode 버전이 어떻게 되나요? 강의를 원활하게 따라가기 위해서는 플러터 버전 3.19.x 버전 혹은 그 이하 버전을 사용해야 합니다. 그리고 xCode 버전은 15.x버전으로 설치하시면 강의를 들으면서 학습하시는데 문제가 없을 것입니다. 만일 플러터 최신 버전을 이용하시고 xCode 최신 버전을 이용하시게 되면 라이브러리 등 호환성 문제로 강의를 듣는데 다소 어려움이 있을 것입니다. 이런 불편함을 드려서 죄송합니다. 아무래도 강의 제작시기가 1년전이다 보니 최신화 작업이 되지 않았습니다. 원활한 강의를 위해서 최신화 과정을 제작해야 하겠지만 지금 개인적인 사정으로 강의 제작에 어려움이 있는 상태라 양해 부탁드립니다.
- 0
- 1
- 109
질문&답변
기능별로 정리가 되지않아요
자동완성과 좌측의 폴더의 아이콘 모양을 말씀하시는것 같은데 확장 플러그인이 정상적으로 설치 되어있는지 확인이 필요합니다. 자동완성의 경우 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
- 117
질문&답변
클래스 이름 동시 변경
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
- 86
질문&답변
단축키옵션
https://marketplace.visualstudio.com/items?itemName=Nash.awesome-flutter-snippets위 VSCode 확장플러그인을 설치하시면 됩니다.
- 0
- 2
- 96
질문&답변
의존성 세팅이 끝나면
코드는 항상 저장해야 합니다. 그래야 적용됩니다.
- 0
- 1
- 58
질문&답변
플러터 설치
안녕하세요 플러터 설치의 경우 아래 링크에서 설치 하시면 되겠습니다. https://flutter-ko.dev/get-started/install/macos
- 0
- 2
- 105