소개
1인 개발자로 활동하고 있는 DevStory입니다.
강의
전체2수강평
- flutter를 입문자를 위한 최고의 강의 같습니다!
1234
2024.08.20
1
게시글
질문&답변
2024.09.19
공부 방법에 대한 문의 입니다~
안녕하세요 김곰님 질문 주신 권장 학습 방법에 대해 답변드립니다. 첫 수강시에는 논리적으로 어떤 문제들을 어떻게 해결하는지 큰 그림을 이해하는 방향으로 빠르게 수강해 주세요. 디테일한 구현이나 작은 그림에 대한 강의(e.g. 디자인 시스템에서 컴포넌트 구현 파트)는 넘어가셔도 무방합니다. 강의의 설명을 들어도 이해가 안되는 부분이 있다면 대한 질문을 남겨주세요. 질문은 내가 무엇을 모르는지 생각해 볼 수 있는 좋은 계기가 되기도 하고 시간 낭비도 줄여주므로 활용하시는 것을 권장 드립니다. 참고로 ChatGPT도 생각보다 대답을 잘해주므로 함께 활용하시는 것을 권장드립니다. 첫 수강 이후 내 서비스를 만들 때 활용해 보고 싶은 기술을 선정하여 상세히 수강해 주세요. 강의의 모든 파트가 필수는 아니므로 아래 내용을 참고하셔서 선택하시면 됩니다. Dart 실전 문법 : 필수 상태관리 : 필수 / Riverpod, Cubit, Bloc 파트는 해당 기술을 사용하지 않으신다면 생략 가능 다국어 지원 : 선택 / 다국어 지원을 안할거라면 생략 가능 디자인 시스템 : 선택 / 동적 테마(다크, 라이트)를 지원하지 않는다면 생략 가능 반응형 UI : 선택 / 모바일만 지원하고 테블릿은 지원하지 않을거라면 생략 가능 MVVM : 권장 / 프로젝트가 커져도 지속적으로 유지보수 가능한 프로젝트로 유지하고 싶다면 수강 권장 Test : 선택 / 테스트 코드를 반드시 작성해야하는 회사가 아니라면 생략 가능 수강한 내용을 내 프로젝트에 직접 반영하면서 구현해 보세요. 처음에는 한 번에 안되실거므로 강의 자료를 참고하면서 내 것으로 조금씩 만들어가시길 바랍니다. 감사합니다 🙂
- 1
- 2
- 16
질문&답변
2024.09.19
VScode에 내용물이 안보이는 이유가 뭔가요?
안녕하세요 첨부해 주신 스크린샷을 보니 /Users/sanghyunlee/Downloads/flutter/bin/flutter 폴더에 flutter SDK가 설치되어 있는데, 해당 폴더에 대한 접근에 대한 권한이 없는 것 같습니다. 터미널에서 다음 명령어를 실행해 주세요. sudo chown -R $(whoami) /Users/sanghyunlee/Downloads/flutter/bin VSCode를 재시작한 뒤 다시 flutter 프로젝트를 만들어주세요. 그대로 작동이 안되시는 경우, 팀뷰어 설치 후 오픈 카카오톡 으로 연락주시면 원격으로 도와드리겠습니다. 감사합니다 :)
- 1
- 2
- 11
질문&답변
2024.09.19
스샷처럼 취소선이 왜 생기나요?
안녕하세요 취소선은 해당 기능은 향후 삭제될 예정이니 다른 방법 사용하라는 표시입니다. Deprecated 되었다고 표현하며, MaterialStateProperty 에 마우스를 올려보시면 취소선이 그어진 이유가 나타납니다. (사진) 내용을 읽어보면 3.19.0-0.3.pre에서 deprecated 되었으니 WidgetStateProperty 기능을 사용하라고 알려주고 있습니다. 내용에 따라 해당 부분을 아래와 같이 수정해주시면 됩니다. (사진) 현재 사용중인 Flutter 버전에선 문제 없이 동작하지만, 향후 해당 기능이 삭제된 최신 버전으로 Flutter를 업그래이드 하는 경우 문제가 발생할 수 있으니 새로 변경된 방법으로 변경하시는 것을 권장드립니다. 감사합니다 :)
- 1
- 2
- 24
질문&답변
2024.09.09
late final 속성
안녕하세요. 말씀해 주신 문제를 해결하는 두 가지 방법이 있습니다. 방법1. AppTheme 클래스의 brightness 를 Getter 함수로 변경한다. abstract interface class AppTheme { Brightness get brightness; late final AppColor color; late final AppDeco deco; late final AppTypo typo; } 방법2. LightTheme 클래스의 생성자를 통해서 brightness 의 초기값을 전달한다. class LightTheme implements AppTheme { LightTheme({this.brightness = Brightness.light}); @override late final Brightness brightness; 또는 class LightTheme implements AppTheme { LightTheme() : brightness = Brightness.light; @override late final Brightness brightness; 위와 같은 방법으로 처리를 해야하는 근거는 링크 에서 확인하실 수 있는데, Dart 언어 스팩이 이렇게 구현되어 있다고 이해하시면 될 것 같습니다. 감사합니다 :)
- 1
- 1
- 8
질문&답변
2024.09.08
firebase 로그인 및 회원가입 async-await 필요여부
안녕하세요. 로그인이라는 비동기 함수가 끝나길 기다렸다가 결과에 따라 다음 로직을 실행해야 하는 경우 async await을 사용하여 구현할 수도 있지만, 아래 강의 자료와 같이 로그인이 성공하면 onSuccess 로 전달한 함수가 호출되고, 실패한 경우에는 onError 로 전달한 함수가 호출되는 콜백(call back) 함수 방식으로도 구현할 수 있습니다. // 로그인 authService.signIn( email: emailController.text, password: passwordController.text, onSuccess: () { // 로그인 성공 ScaffoldMessenger.of(context).showSnackBar(SnackBar( content: Text("로그인 성공"), )); // HomePage로 이동 Navigator.pushReplacement( context, MaterialPageRoute(builder: (context) => HomePage()), ); }, onError: (err) { // 에러 발생 ScaffoldMessenger.of(context).showSnackBar(SnackBar( content: Text(err), )); }, ); }, 만약 위 내용을 async-await 형태로 바꾼다면 authService.signIn 에서 Exception을 던질지, 성공 실패 값을 반환할지 여부에 따라 다르겠지만, 만약 실패시 Exception을 던지도록 만든다면 아래와 같이 구현할 수 있습니다. try { await authService.signIn( email: emailController.text, password: emailController.text, ); // 로그인 성공 ScaffoldMessenger.of(context).showSnackBar(SnackBar( content: Text("로그인 성공"), )); // HomePage로 이동 Navigator.pushReplacement( context, MaterialPageRoute(builder: (context) => HomePage()), ); } catch (err) { // 에러 발생 ScaffoldMessenger.of(context).showSnackBar(SnackBar( content: Text(err.toString()), )); } 감사합니다 :)
- 1
- 1
- 21