월 26,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
이 경고는 어떻게하면 없어지나요?
찾아보니 mounted 확인하고 리턴시켜라는데 mounted가 존재하지 않네요.무시해도 상관없겠지만 개인적으로 노란줄 뜨는거 싫어해서 해결 방법이 있다면 알고 싶습니다.
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
디스코드
아래 채널을 찾을 수 없습니다.무효화되거나 만료된 채널이라고 나옵니다.코드팩토리 디스코드https://bit.ly/3HzRzUM확인 부탁드립니다.
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
riverpod watch 사용
flutter 화면 layout 을 만들때 코드가 길어져 Screen 의 위젯들을 분리하여 만들고 build 에서 합체시킵니다. riverpod provider 에서 상태값을 가져와 위젯에 출력해주고자 하는데 궁금한 점은 각 분리된 위젯들에서 상태값을 독립적으로 watch 해서 적용하는 것과, build 에서 통합적으로 watch 하다가 필요한 값들을 각 위젯으로 넘겨주는 것 중 어떤것이 성능상 이로운지아니면 별 차이가 없는지 궁금합니다. (각 위젯마다 여기저기서 watch 를 하고 있으면 더 성능이 떨어질 것 같기도 하고, build 에다 넣어 놓으면 화면 재 빌드 될 때 영향을 받을 것 같기도 하고 괜한 걱정인가요?^^;; ) @override Widget build(BuildContext context) { var state = ref.watch(userAccountProvider); return Column( children: [ _loginA(state.userName), _loginB(state.userId), ], ); } or Widget _loginA() { var state = ref.watch(userAccountProvider); return Text(state.userName); } Widget _loginB() { var state = ref.watch(userAccountProvider); return Text(state.userId); }
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
주문 탭 에러
안녕하세요. 수업 중 에러에 관해 질문 드립니다. 주문 탭 완성한 후에 에러가 발생했고, 아래와 같습니다.에러관련 파일 : pagination_provider.dart========Error=======I/flutter ( 4231): FormatException: Invalid date formatI/flutter ( 4231): stringI/flutter ( 4231): #0 DateTime.parse (dart:core/date_time.dart:347:7) 관련 수업들 재차 확인해 보았고 오타는 없었습니다.OrderModel 에서 final DateTime createdAt;위의 것에서 에러가 나오는건지해서 제외시키고도 해보고, intl 패키지 사용해서 DateFormatting을 다르게 해보았는데도 안되고 있습니다.제가 확인해본바로는, OrderCard.fromModel빌드할때 에러가 발생하는것 같긴한데..OrderCard의 orderDate도 DateTime형식이고, OrderCard.fromModel의 crestaedAt도 DateTime형식인데 뭐가 문제인지 도무지 모르겠어서 여쭤봅니다.
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
GO router 관련 질문.
안녕하세요, 수업내용 중 에러발생하여 글 작성합니다.go router를 프로젝트에 적용하는 수업을 듣는데, 적용 후 하기와 같은 에러가 발생 했습니다.'package:flutter/src/widgets/navigator.dart': Failed assertion: line 2918 pos 12: 'route._navigator == navigator': is not true.오타가 있을까봐 관련 수업들 전부 2,3번 보았지만 오타는 없었습니다. 찾아보니 리다이렉트가 2번실행되는 상황들이 있다고 해서 redirect를 없애고 실행하니 잘되었습니다. 에러발생 사유와 어떻게 방지해야되는지 알 수있을까요?
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
401에러 logout() 문제 auth_provider.dart에 logout() 함수 작성시 notifierListener() 추가시 해결했습니다.
GoRouter 프로젝트에 적용하기 / RefreshToken 만료되면 로그아웃 영상 4분42초 부분에서 void logout() { ref.read(userMeProvider.notifier).logout(); notifierListener(); // 이부분 삭제하셨음. }수업에서 notifierListener()를 삭제하셨지만,제 경우에는 삭제하면 오히려 401 에러로 인해 splashScreen을 빠져나가지 못하고 App이 멈춰버리는 문제가 생깁니다.오히려 그대로 놔두는 것이 잘 작동합니다.버전 문제인지 뭔지는 모르지만 다른 분들에게 도움 되었으면 해서글로 남겨봅니다.혹시 삭제한 이유가 따로 있는 건지 궁금하기도 합니다.
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
copyWith에 대해 질문있습니다
focusedBorder: baseBorder.copyWith( borderSide: baseBorder.borderSide.copyWith( color: PRIMARY_COLOR, ), ),강의에서는 borderSide도 copyWith로 복사하신 다음에 덮어쓰시는 방식을 사용하셨는데요focusedBorder: baseBorder.copyWith( borderSide: BorderSide( color: PRIMARY_COLOR, ), ), 이런식으로 borderSide만 새로 만들어서 사용해도 다른 부분은 복사되서 같을 것 같은데 내부 값에도 copyWith를 사용하신 이유가 궁금합니다.혹시 아래의 방법을 사용하면 비효율 적인가요?
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
[에러] GoRouter 적용하는 단계에서 401 에러가 뜹니다.
GoRouter 프로젝트에 적용하기 / Authentication 마무리하기 강의 단계에서서버에서 401 Unauthorized 에러가 발생합니다.디버그 내용을보면 잘못된 토큰이라고 나와서토큰 변환 코드가 잘못됐나 확인했지만 문제가 없었습니다.에러 발생 후 바로 이동한 파일이 user_me_repository.g.dart 파일이고아래 두 번째 사진에서 코드에서 에러 메세지가 발생했습니다.아이폰 시뮬레이터에선 splash_screen에서 멈추고로그인 화면으론 넘어가지 않았습니다.어떻게 해야 이 에러를 해결 할 수 있나요?<작업 컴퓨터><1번째 사진><2번째 사진><3번째 사진><서버 컴퓨터>
- 해결됨[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
[Postman에서 인증 URL 테스트하기 (login)] 토큰 발급 질문
현재는 POST 요청에 {id:id, pw:pw} body를 작성해서 토큰을 받아오고 있는데요, 제가 기존에 사용하고 있는 방식과 Basic + email:password 방식과의 차이점과 장단점을 알 수 있을까요?
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
중급 다음 과정은 무얼 배워야 할까요?
안녕하세요, 코팩님의 초급, 중급강의 수강하고 유데미에서 플러터 공부를 이어가고 있습니다. 코팩님의 중급 강의 다음으로는 어떤 걸 배워야 할까요?? 혼자서 앱 출시까지 해보고 싶은데요, 꼭 숙지해야하지만 중급강의엔 없는 것이 있나요??
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
iOS16 Simulator에서 디버그 모드 빌드 시 에러 발생
Xcode 14.0 업데이트 후 iOS 16.0 시뮬레이터에서 앱을 빌드해서 테스트 해보고 있는데 아래 에러 메시지와 함께 디버그 빌드가 불가능한 상태입니다.Error waiting for a debug connection: The log reader failed unexpectedly Error launching application on iPhone 13 mini.빌드 자체는 성공적으로 되는 듯 하고 별도로 빌드된 앱을 실행하면 정상적으로 실행됩니다.Flutter 및 Android Studio 모두 최신 버전을 사용 중인데 원인 파악이 정확히 안되네요 ㅠㅠ혹시 관련 이슈가 있을까요?
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
주문데이터를 가져오지 못하고 있는데요. postOrder에 제가 뭔가 파라미터를 잘못 넣은 걸까요?
[Nest] 1286 - 2022. 09. 20. 오후 9:17:20 ERROR [ExceptionsHandler] Cannot read property 'restaurant' of undefinedTypeError: Cannot read property 'restaurant' of undefined at OrderService.postOrder (/Users/dane_won/NodeProjects/flutter-lv2-server-main/src/order/order.service.ts:36:8) at OrderController.postOrder (/Users/dane_won/NodeProjects/flutter-lv2-server-main/src/order/order.controller.ts:63:30) at /Users/dane_won/NodeProjects/flutter-lv2-server-main/node_modules/@nestjs/core/router/router-execution-context.js:38:29 at runMicrotasks (<anonymous>) at processTicksAndRejections (internal/process/task_queues.js:95:5) ==== 파라미터를 잘못 보낸 느낌인 것 같은데... 다시 찾아봐야겠죠?ㅠㅠ
- 해결됨[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
장바구니에 상품 추가하는 로직에서 궁금한 점이 있습니다.
안녕하세요 코드팩토리님! 강의 너무 잘 듣고 있습니다! 다름이 아니라 장바구니에 상품을 추가하는 로직에서 궁금한 점이 있는데요... Future<void> addToBasket() { ... await patchBasket(); } Future<void> removeToBasket() { ... await patchBasket(); }지금은 위와 같이 상품을 추가하고, 삭제할 때마다 서버에 patchBasket 요청을 보내고 있습니다.하지만 사용자가 상품 선택을 끝내고 장바구니를 다 완성한 후에 patchBasket() 을 요청하는게 더 클라이언트-서버간의 통신횟수를 줄일 수 있지 않을까요?? 아니면 optimistic response를 설명하기에 적절한 예제라고 판단하셔서 저렇게 구현하신건지 궁금합니다!! 그게 아니라면 위와 같은 방식으로 장바구니 변경 시마다 api 요청을 보내는 방식의 이점이나 이유가 궁금합니다! 좋은 강의해주셔서 감사합니다~!
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
Flutter[중급] 과정 듣고 있습니다.
제가 초급을 듣지 않고 중급을 듣고 있는데 Asset 파일을 어디서 받아야하는지 몰라서요...기본적인 지식은 있어서 아무 이미지 파일을 넣고 시작했는데....이상해서요...
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
혹시 휴대폰에 직접 연결하려면 어떻게 하나요??
직접 케이블로 휴대폰과 연결해서 사용하는경우 ip를 어떤식으로 해줘야하나요??
- 해결됨[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
PaginationListView에서 제네릭 관련
안녕하세요. 코팩님![고급 캐시관리] 파트의 PaginationListView와 PaginationWidgetBuilder에서 제네릭을 처리하는 부분에 있어 타입 추론이 명확하게 되지 않는 부분이 있습니다.class PaginationListView<T extends IModelWithId> extends ConsumerStatefulWidget { final StateNotifierProvider<PaginationProvider, CursorPaginationBase> provider; final PaginationWidgetBuilder<T> itemBuilder; ... @override ConsumerState<PaginationListView> createState() => _PaginationListViewState<T>(); } class _PaginationListViewState<T extends IModelWithId> extends ConsumerState<PaginationListView> { ...여기서 _PaginationListViewState 클래스는 ConsumerState<PaginationListView>를 상속 받으면서 정확하게는 ConsumerState<PaginationListView<dynamic>>을 상속하게 됩니다.이로 인해 State클래스 내부에서 호출하는 itemBuilder는 PaginationWidgetBuilder<dynamic>으로 동작하여 실제 사용하는 코드 부분에서 itemBuilder 파라미터에 빌더 작성시 일반적으로는 아래와 같은 에러가 발생합니다.type '(BuildContext, int, RestaurantModel) => Widget' is not a subtype of type '(BuildContext, int, IModelWithId) => Widget'이에 builder Function 앞에 강의 내용처럼<RestaurantModel>을 선언하여 에러를 회피할 수 있지만, 이럴 경우 빌더에 전달되는 파라미터는 전부 dynamic으로 추론되는 것을 확인했습니다. 그리고, 새로운 익명함수를 정의하는 형태라 그런지 앞에 <RestaurantModel>가 아닌 아무 의미 없이 <ABC>를 적어도 빌드나 실제 앱 동작에 아무런 문제가 없습니다.그래서 빌더 함수 내부에서model.을 입력하더라도 dynamic 이기 때문에 실제로 목표로 하는 모델의 속성들이 자동완성 제안이 되지 않고 런타임에서 대입됩니다. class _PaginationListViewState<T extends IModelWithId> extends ConsumerState<PaginationListView<T>> { ...위와 같이 State 클래스에서 선언한 제네릭 T를 이용해서 PaginationListView<T>의 ConsumerState 임을 명시했을 때, State클래스 내부의 itemBuilder가 PaginationWidgetBuilder<T>로 잘 동작했습니다.타입이 명확하므로 builder Function에 <RestaurantModel>을 쓰지 않아도 정확한 타입을 전달해줬습니다.마찬가지로 final StateNotifierProvider<PaginationProvider, CursorPaginationBase> provider; 이 부분도 제네릭을 명시해야 실제 해당 뷰의 모델에 맞는 프로바이더만 주입 가능하기 때문에 더 나을 것 같습니다.dynamic이 넘어오는게 의아해서, 혼자 이리저리 해보면서 궁금증을 해결했는데 강의에 괜찮은 피드백이 될까 싶어서 글 남깁니다 :) 좋은 강의 감사드립니다.내용이 좋아서 시간 가는 줄 모르고 꾸준히 듣고 있네요!
- 해결됨[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
레퍼지토리 문의
안녕하세요 강사님좋은 강의 잘 보고 있습니다.다름이 아니라 해당 강의의 코드들에 대해 github 레퍼지토리 공개 의향이 혹시 없으실까요?
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
PaginatoinParams const 관련
Future<CursorPagination<RestaurantModel>> paginate({ PaginationParams? paginationParams = const PaginationParams(), });const를 쓰면 Try removing 'const' from the constructor invocation.The default value of an optional parameter must be constant.const를 지우면The constructor being called isn't a const constructor. 이렇게 갇힌 상황인데요. PaginationParams를 변경해야 할까요?flutter 3.0.5, dart 2.17.6 사용하고 있습니다.
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
서버폴드 어디로 들어가면 지연시간 코드를 지울 수 있나요?
공유기 한대로컴퓨터 두대를 이용하고 있고,한대는 맥북이고, 코딩용으로 사용하고,다른 한대는 데스크탑이고, 서버용으로 사용하려고 합니다.강의에서 실제 서버사용하는 것과 같은 환경을 만들기 위해지연시간을 뒀다고 하셨는데, 서버 컴퓨터를 따로 두고 있다면지연시간을 지워도 되는 건지 궁금합니다.지운다면 어떤 경로로 들어가서 지워야되는지 알려주시면 감사하겠습니다. 추가로 질문 드릴 사항은 아래 코드에서// localhost const emulatorIp = '10.0.2.2.:3000'; const simulatorIp = '127.0.0.1:3000'; final ip = Platform.isIOS ? simulatorIp : emulatorIp;서버 컴퓨터를 따로 두는 상황에선 위 코드의 ip 주소를 동일하게 둬도 되는건가요?아니면 또 다르게 코드를 짜야하는건가요?
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
혹시 키보드 뭐쓰시나요?
타자가 아주 빠르시네요 키보드 뭐쓰시나요?