월 26,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
RestaurantRatingProvier를 Riverpod 2.0으로 마이그레이션 어떻게 할수 있을까요??
코팩님이 riverpod 2.0 강의 영상을 올리셔서 2.0으로 마이그레이션하려는데, RestauranRatingStateNotifier가 StateNotifier<CursorPaginationBase>를 extend하고 있는데 이걸 어떻게 riverpod 2.0으로 마이그레이션 할수 있을까요?
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
리버팟 패키지가 import가 안되는 것 같습니다...
이렇게 뜨는데 왜이럴까요 ...ㅠㅠ에러 메시지는 정확히 lib/riverpot/state_provier_screen.dart:1:8: Error: Error when reading '../../../Documents/libraries/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_riverpod-2.1.3/lib/flutter_riverpod.dart/': Not a directoryimport "package:flutter_riverpod/flutter_riverpod.dart/"; ^lib/riverpot/state_provier_screen.dart:3:24: Error: Method not found: 'StateProvider'.final numberProvider = StateProvider<int>((ref) => 0); ^^^^^^^^^^^^^FAILURE: Build failed with an exception.* Where:Script '/Users/kimkinam/Documents/libraries/flutter/packages/flutter_tools/gradle/flutter.gradle' line: 1159* What went wrong:Execution failed for task ':app:compileFlutterBuildDebug'.> Process 'command '/Users/kimkinam/Documents/libraries/flutter/bin/flutter'' finished with non-zero exit value 1* Try:> Run with --stacktrace option to get the stack trace.> Run with --info or --debug option to get more log output.> Run with --scan to get full insights.* Get more help at https://help.gradle.orgBUILD FAILED in 6sException: Gradle task assembleDebug failed with exit code 1 이렇게 뜹니다.
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
RootTab 이동시 if(!mounted) return; 에 관해
안녕하세요. 초급 완강하고 중급을 듣고 있는 중입니다.현재 기초적인 RootTab 을 만들고 로그인 성공시 해당 페이지로 넘어가도록 설정하는 과정에서 에러,do not use BuildContext across async gaps.가 발생하여 검색해보니if(!mounted) return; Navigator.of(context).push(MaterialPageRoute(builder: (_)=>RootTab(),),);위와같이 if(!mounted);를 넣는 방법이 있다는 것을 알았습니다. 설명도 읽어보긴 했으나 조금 이해가 안되어서 질문드립니다. if(!mounted) return; 이 없어도 작동은 하더라구요.해결은 됐는데, 이 에러의 의미와 해결법의 의미가 무엇인지 궁금합니다. 연말잘보내시고, 새해복 많이 받으세요.
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
토큰의 에러를 처리하는 부분은 백엔드에서 작성하는 것이 더 효율적일까요?
Dio on Error Interceptor를 보다보니 이부분은 백엔드에서도 처리할 수 있겠다는 생각이 들었습니다앱의 성능 측면에서 어떻게 처리하는 것이 더 효율적인가요? 아님 애초에 백엔드에서는 이부분을 처리하지 못하는 걸까요?
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
커서 페이지네이션의 경우 마지막 모델이 숫자가 아닌 UUID 값으로 처리할때는 어떻게 되나요?
마지막 key가 숫자의 경우와 UUID처럼 특정 고유 key의 경우 모두 다음 값을 특정할 수 있을 것 같은데 마지막 key의 데이터가 삭제 되었을때 key가 숫자일때는 문제가 없지만 UUID의 경우 오류가 발생하지 않나요? 그 부분은 어떻게 처리 하게 되나요? 1 2 3 4 5 6take :4 , 마지막 키: 4 = 5 ,6 이 불러와짐 4 데이터가 삭제 되었어도 문제 없이 5,6 불러와짐. X B. E. W. H. U take : 4 마지막키 : W = H, U 불러와짐W 테이터가 삭제 되었을시 기준값이 없기에 오류가 발생 위 경우입니다.
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
스크롤시 요청이 한번만 나가게 처리할 수 있나요??
기존 데이터가 사라지고 새로온 데이터만 그려지는군요.. 어느 부분 체크해봐야 할까요.
- 해결됨[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
Padding 이 아닌 SliverPadding 을 사용한 이유는 무엇인가요?
Padding 이 아닌 SliverPadding 을 사용한 이유는 무엇인가요?ProductCard 를 Padding 으로 감싸는데 거기에 한번에 넣어주어될 것 같습니다.
- 해결됨[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
factory 를 사용하는 이유는 인스턴스를 하나만 생성하기 위함인가요?
factory 를 사용하는 이유는 인스턴스를 하나만 생성하기 위함인가요?RestaurantModel.fromJson({required Map<String, dynamic> json}) : id = json['id'], name = json['name'], thumbUrl = 'http://${ip}:3000${json['thumbUrl']}', tags = List<String>.from(json['tags']), priceRange = RestaurantPriceRange.values .firstWhere((price) => price.name == json['priceRange']), ratings = json['ratings'], ratingsCount = json['ratingsCount'], deliveryTime = json['deliveryTime'], deliveryFee = json['deliveryFee'];이렇게 factory 없이 선언해도 작동하는 것 같아, 어떤 것이 더 좋은 방향인지 궁금 합니다.
- 해결됨[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
page 는 index 기준 cursor 는 숫자로된 id 기준 이라고 생각하면 될까요?
page 는 index 기준 cursor 는 숫자로된 id 기준 이라고 생각하면 될까요?
- 해결됨[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
시뮬레이션 앱삭제후 에도 토큰 정보가 저장되어 있는데, 실제 핸드폰에서도 삭제해도 저장되어있나요?
시뮬레이션 앱삭제후 에도 토큰 정보가 저장되어 있는데, 실제 핸드폰에서도 삭제해도 저장되어있나요?
- 해결됨[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
analysis_options.yaml 파일 rules 세팅 질문입니다.
TextStyle 에 자꾸 밑줄이 쳐저서, 검색을 해봤더니 analysis_options.yaml 에 rules 를 세팅해야 된다고 하더라구요. 혹시 세팅한 세팅값을 알 수 있을까요?
- 해결됨[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
type: BottomNavigationBarType.fixed, 으로 변경시 메뉴의 label 이 나오는 이유가 무엇인가요?
type: BottomNavigationBarType.shifting, 때는 메뉴의 label 이 나오지 않다가type: BottomNavigationBarType.fixed, 으로 변경시 메뉴의 label 이 나오는 이유가 무엇인가요?
- 해결됨[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
스웨거에서 auth/login 테스트시 400 에러
postman 으로는 정상적으로 테스트 되지만,스웨거로 진행할시 400 에러가 나는데, 스웨거로는 테스트가 불가한 것인가요?
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
기본상태의 border 스타일을 지정하는 속성이 border 속성이 아닌 enabledBorder 속성 인 것 같습니다.
// 기본상태 라인 (기본값은 UnderlineInputBorder() 이다 / 아래에만 border 생성) enabledBorder: baseBorder, // 아래 줄을 없앰기본상태의 border 스타일을 지정하는 속성이 border 속성이 아닌 enabledBorder 속성 인 것 같습니다.
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
코드팩토리 고급 & 백엔드 개발 과정(추천)
안녕하세요. 최근 앱개발 강의를 집중해서 수강하고 있는데. 단연 최고의 강의라고 생각합니다.Old 개발자(프론트/백엔드 개발자 경력 15년전..)로써 차원이 다른 강의와 열정에 다시 한번 감사드립니다. 다음 고급레벨의 컨텐츠를 찾고 있는데 도움을 요청하고자 질문을 드립니다. 이번 중급과정에서 사용한 서버사이드(백엔드) 개발에 대해서 더 공부를 하고 싶은데 추천해 주실 강의가 있을까요? 아님 코드팩토리에서 기획하고 있거나 서비스하고 있는 강의가 있는지 문의드립니다. 서버개발과 데이터베이스, API까지 공부하면 Flutter앱개발에 더 관심가지고 실제 프로덕트를 설계하고 개발/배포까지 자신이 생길 것 같습니다. 감사합니다.
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
챕터별 소스코드 버전(Github)
안녕하세요 훌륭하고 열정적인 강의에 항상 감사합니다. 열심히 따라하고 있지만 아직 많이 부족합니다.강의 챕터별로 메인프로젝트 소스코드가 github에 올라가 있는데요.강의별로 버전을 알려주시면 도움이 될 것 같습니다. 감사합니다.
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
go_router.dart error(auth_provider내 redirectLogic)
auth_provider.dart내에서 redirectLogin 추가하고 이런 에러가 나와서요 아무리 소스코드를 확인해봐도.. type에러인것 같긴한데.. 부탁드립니다.String? redirectLogic(GoRouterState state) { final UserModelBase? user = ref.read(userMeProvider);==========================================================lib/common/provider/go_router.dart:14:24: Error: The argument type 'String? Function(GoRouterState)' can't be assigned to the parameter type 'FutureOr<String?> Function(BuildContext, GoRouterState)?'. - 'GoRouterState' is from 'package:go_router/src/state.dart' ('../../Libraries/flutter/.pub-cache/hosted/pub.dartlang.org/go_router-5.2.4/lib/src/state.dart'). - 'BuildContext' is from 'package:flutter/src/widgets/framework.dart' ('../../Libraries/flutter/packages/flutter/lib/src/widgets/framework.dart').go_router.dartimport 'package:actual/user/provider/auth_provider.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; final routerProvider = Provider<GoRouter>((ref) { // watch - 값이 변경될때마다 다시 빌드 // read - 한번만 읽고 값이 변경돼도 다시 빌드하지 않음 final provider = ref.read(authProvider); return GoRouter( routes: provider.routes, initialLocation: '/splash', refreshListenable: provider, redirect: provider.redirectLogic, ); });
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
Rating DataUtils error for ListPathsToUrls(해결됨)
DataUtilsstatic List<String> ListPathsToUrls(List paths){ return paths.map((e) => pathToUrl(e)).toList(); }수정 후 아래와 같은 에러가 나서요..(Rating contents가 나오질 않습니다.)==>flutter pub run build_runner build로 해도 에러코드가 발생하는데.. 확인 부탁드립니다.다음 강의 수강을 위해서 앱실행이 안되고 수업을 따라갈수가 없어서요.. 다시 한번 부탁드립니다.lib/common/data_utils.dart:10:43: Error: A value of type 'List<dynamic>' can't be returned from a function with return type 'List<String>'.- 'List' is from 'dart:core'.return paths.map((e) => pathToUrl(e)).toList(); ==> flutter clean==> flutter pub get==> flutter pub run build_runner build===========> pub finished with exit code 78flutter: type 'List<dynamic>' is not a subtype of type 'List<String>'flutter: #0 $RatingModelFromJson (package:actual/rating/model/ratingmodel.g.dart:14:22)#1 new RatingModel.fromJson (package:actual/rating/model/rating_model.dart:28:6)#2 RestaurantRatingRepository.paginate.<anonymous closure> (package:actual/restaurant/repository/restaurantrating_repository.g.dart:46:29)#3 MappedListIterable.elementAt (dart:_internal/iterable.dart:413:31)#4 ListIterator.moveNext (dart:_internal/iterable.dart:342:26)#5 new GrowableList.ofEfficientLengthIterable (dart:core-patch/growable_array.dart:189:27)#6 new GrowableList.of (dart:core-patch/growablearray.dart:150:28)#7 new List.of (dart:core-patch/array_patch.dart:51:28)#8 ListIterable.toList (dart:_internal/iterable.dart:213:44)#9 $CursorPaginationFromJson (package:actual/common/model/cursorpagination.g.dart:15:60)#10 new CursorPagination.fromJson (package:actual/common/model/cursor_pagination.dart:41:7)#11 _RestaurantRatingRepository.paginate (pa<…>
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
코드공유
안녕하세요코드 공유 깃헙 좀 알 수 있을까요?
- 해결됨[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
섹션13 마지막강의에 logout부분에서 이해가 잘 안됩니다.
마지막 Dio CustomIntereptor의 onError 부분에, refreshtoken이 만료되었을 때 로그아웃을 하는부분이 이해가 잘 안되서 질문글을 남깁니다.ref.read(userMeProvider.notifier).logout();ref.read(authProvider.notifier).logout();여기서 read는 실행되는 순간에만 provider를 불러오고, 실제로 전체 클래스의 디펜던시가 아니라고 하였는데, 이 말이 provider의 전체 부분(?)이 아니다, provider의 전체 instance를 가져온다는 뜻이 아니다. 라는 말과 비슷한지 궁금합니다. 그리고 1번의 경우는 직접 inject를 하는 경우이고, 2번의 경우는 우회를 하는 경우이며, 직접 inject를 하는 경우 userMeProvider의 값을 build time에 넣어줘야 하는데 userMeProvider에서 dio값을 참조하는 부분이 있어 circular dependency error가 발생한다.. 라고 이해를 하였는데 제대로 이해를 하고 있는것인지 궁금합니다. 마지막으로 제가 제대로 이해한 것이라면, 2번의 경우 어짜피 authProvider의 logout이 userMeProvider를 호출하여 사용하는건데, 왜 직접 inject하는 것과 우회하는 것이 다른 결과를 도출하게 되는지 궁금합니다. 긴 질문 읽어주셔서 감사합니다..