월 19,800원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[코드팩토리] [중급] 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하는 것과 우회하는 것이 다른 결과를 도출하게 되는지 궁금합니다. 긴 질문 읽어주셔서 감사합니다..
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
다음 강의
안녕하세요 선생님! 평소에 유툽으로만 보다가 어찌어찌 새로운 강의를 알게되어 이번에 완강하게 되었는데 배울점이 너무 많아 좋았습니다.혹시 다음 강의 진도가 아직 남아있다면 계획된 일정 같은게 있을까요?
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
Restaurant Pagination - 1분대쯤 질문입니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.코드팩토리 디스코드https://bit.ly/3HzRzUMFlutter 강의를 구매하시면 코드팩토리 디스코드 서버 플러터 프리미엄 채널에 들어오실 수 있습니다! 디스코드 서버에 들어오시고 저에게 메세지로 강의를 구매하신 이메일을 보내주시면 프리미엄 채널에 등록해드려요! 프리미엄 채널에 들어오시면 모든 질의응답 최우선으로 답변해드립니다! @GET('/') @Headers({'accessToken': 'true'}) Future<CursorPagination<RestaurantModel>> paginate({ @Queries() PaginationParams? paginationParams = const PaginationParams(), // PaginationParams가 널인 경우는 언제? });위 코드에서 PaginationParams에 null까지 받는 이유가 있나여?? default parameter로 null인 경우는 아예 없지 않나요?? 일부러 paginate(null)이런 경우가 없을 거 같아서 질문드립니다!!
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
프로젝트 제작 시 진행순서에 관해서..
안녕하세여 강사님 저는 플러터 개발을 배우고 있는 초보 개발자 입니다. 강의랑은 상관없는 내용일 수 있지만 개인적으로 프로젝트 제작 과정에 대해서 상세한 설명을 듣고 싶습니다.플러터 중급 강의에서는 백앤드가 준비되어있는 상태에서 진행이 되었는데 만약 앱과 서버를 동시에 만들면서 제작을 진행해야 한다면 어떠한 방식으로 해야하는지, 강사님은 어떤것 부터 하고 어떤 방식으로 하는지가 궁금합니다. 풀스택 개발자의 위엄이 궁금합니다 ㅎ
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
고라우터
안녕하세요 go vs goname 차이점이 정확하게 몬지 잘 모르겠습니다. 한가지 페이지 개발중인데요 a 푸시네임 b 푸시네임 c a, b, c 라우터에 해당안됨 각각 독립된 화면 a->b->c 해당 구조인데요 화면이c 화면에서 gonamed a 하면 b c 없어지고 a로 갑니다 (원하는 기능 성공)근데c화면에서 go a 하면 에러가 나옵니다 no routes for location 둘에 차이점이 몬지 정확하게 잘 모르겟습니다.
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
firebase로 받은 데이터모델링 fromJson 생성자 만드려고 합니다.
firebase로 받은 async querysnapshot을 json으로 바꿔서강의에서 알려주신 fromJson, fromModel 생성자를 만드려고 하는데요,firebase 데이터는 Map<String, dynamic>형태가 아니라고 하는데, 어떻게 타입을 바꾸면 좋을까요?
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
ref.watch로 데이터 변경을 감지하면 해당 코드가 포함된 위젯 전 체가 다 다시 빌드되나요??
안녕하세요!riverpod과 관련해서 질문이 있어서 남깁니다. ref.watch로 데이터 변경이 감지되면 해당 위젯 전체(하위까지)가 모두 다시 빌드되나요? 아니면 해당 데이터를 사용하는 부분만 다시 빌드가 되나요?? 추가로 위젯이 리빌드가 되는지 안되는지 알 수 있는 방법이 있을까요?? - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.코드팩토리 디스코드https://bit.ly/3HzRzUMFlutter 강의를 구매하시면 코드팩토리 디스코드 서버 플러터 프리미엄 채널에 들어오실 수 있습니다! 디스코드 서버에 들어오시고 저에게 메세지로 강의를 구매하신 이메일을 보내주시면 프리미엄 채널에 등록해드려요! 프리미엄 채널에 들어오시면 모든 질의응답 최우선으로 답변해드립니다!
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
토큰 인증 시스템 관련
안녕하세요? 초보부터 중급까지 아주 재미있게 진행해 나가고 있습니다.강의와 직접적인 연관은 아니지만, 간접적인 연관인 부분이 궁금해서 질문 드립니다.클라이언트 기반의 로직은 대부분 강의에 나와 있어서 프로세스가 이해가 되는데요.서버쪽은 대략은 짐작이 되나, 구체적으로 어떻게 돌아가는지 알고 싶은데, 어떤 자료를 어디서 참고해야 될지 조언을 구합니다.예를 들면 인증 API 중에 /auth/login API를 사용하면 정해진 유저 (test@codefactory.ai:testtest)에 대해 Base64로 인코딩된 값으로 서버로 던지면서버에서 디코딩해서 원래의 값을 찾은 후 DB를 검색할 거 같은데,PPT에 설명해주신 자료에 보면 DB를 사용하지 않는다? 라고 하셔서 그럼 어떻게 인증을 하지? 라는 궁금증이 생겼습니다.결론적으로 토큰기반 인증시스템에 대해 서버쪽 프로세스를 알고 싶은데, 관련 자료 알고 계신부분이 있다면 조언 부탁드립니다.아울러 자바 (또는 스프링) 기반의 샘플 소스 코드도 있다면 더욱 좋고요..두서 없이 질문 드려서 죄송합니다.
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
flutter_secure_storage: ^6.0.0 사용 때문인지요?
flutter_secure_storage: ^6.0.0이 버전을 사용했어 그런지 write 문장에서 특별한 에러가 없는데바로 read 해도 null 입니다이것은 버전 문제 일까요?-----------------------print(resp.data);final refreshToken = resp.data['refreshToken'];final accessToken = resp.data['accessToken'];print('login refreshToken:$refreshToken');print('login accessToken:$accessToken');await storage.write(key: REFRESH_TOKEN_KEY, value: refreshToken);await storage.write(key: ACCESS_TOKEN_KEY, value: accessToken);final readRefreshToken = await storage.read(key: 'REFRESH_TOKEN_KEY');final readAccessToken = await storage.read(key: 'ACCESS_TOKEN_KEY');print('readRefreshToken:$readRefreshToken');print('readAccessToken:$readAccessToken');-----------------------{refreshToken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InRlc3RAY29kZWZhY3RvcnkuYWkiLCJzdWIiOiJmNTViMzJkMi00ZDY4LTRjMWUtYTNjYS1kYTlkN2QwZDkyZTUiLCJ0eXBlIjoicmVmcmVzaCIsImlhdCI6MTY2NzM4NTQ3OSwiZXhwIjoxNjY3NDcxODc5fQ.B8Bik9YKNZ8VtCO7BQypqwnR8i9HCpKjWSwDuAwneZk, accessToken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InRlc3RAY29kZWZhY3RvcnkuYWkiLCJzdWIiOiJmNTViMzJkMi00ZDY4LTRjMWUtYTNjYS1kYTlkN2QwZDkyZTUiLCJ0eXBlIjoiYWNjZXNzIiwiaWF0IjoxNjY3Mzg1NDc5LCJleHAiOjE2NjczODU3Nzl9.pUQfDzJ4dd9pMv1FgHJqj7Pv3firnaz7s0JLAtjd5BE}I/flutter (10390): login refreshToken:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InRlc3RAY29kZWZhY3RvcnkuYWkiLCJzdWIiOiJmNTViMzJkMi00ZDY4LTRjMWUtYTNjYS1kYTlkN2QwZDkyZTUiLCJ0eXBlIjoicmVmcmVzaCIsImlhdCI6MTY2NzM4NTQ3OSwiZXhwIjoxNjY3NDcxODc5fQ.B8Bik9YKNZ8VtCO7BQypqwnR8i9HCpKjWSwDuAwneZkI/flutter (10390): login accessToken:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InRlc3RAY29kZWZhY3RvcnkuYWkiLCJzdWIiOiJmNTViMzJkMi00ZDY4LTRjMWUtYTNjYS1kYTlkN2QwZDkyZTUiLCJ0eXBlIjoiYWNjZXNzIiwiaWF0IjoxNjY3Mzg1NDc5LCJleHAiOjE2NjczODU3Nzl9.pUQfDzJ4dd9pMv1FgHJqj7Pv3firnaz7s0JLAtjd5BEI/flutter (10390): readRefreshToken:nullI/flutter (10390): readAccessToken:null
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
flutter_riverpod 강좌를 시작하려는데 pub get이 안됩니다.
-flutter_riverpod: ^1.0.4 pub get 시 에러가 나타납니다. 에러는 다음과 같습니다.Because riverpod depends on flutter_riverpod ^1.0.4 which depends on riverpod 1.0.3, riverpod 1.0.3 is required.So, because riverpod is 1.0.0+1, version solving failed.pub get failed (1; So, because riverpod is 1.0.0+1, version solving failed.)위 메시지가 나타나서 riverpod를 로드하지 못하고 있습니다.참고로 environment: sdk: '>=2.18.2 <3.0.0' 입니다.코드팩토리 디스코드https://bit.ly/3HzRzUMFlutter 강의를 구매하시면 코드팩토리 디스코드 서버 플러터 프리미엄 채널에 들어오실 수 있습니다! 디스코드 서버에 들어오시고 저에게 메세지로 강의를 구매하신 이메일을 보내주시면 프리미엄 채널에 등록해드려요! 프리미엄 채널에 들어오시면 모든 질의응답 최우선으로 답변해드립니다!
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
변수 선언 위치 개념
초급, 중급 강의를 다 구매해서 듣고 있습니다.LoginScreen 에서 username,password 변수선언 위치와storage, dio 변수선언 위치가 Widget build 안, 밖으로 구분되어 있는데어떤 기준으로 나눠지는지 궁금합니다.제가 초급강의에서 개념을 놓친걸까요?class LoginScreen extends StatefulWidget { const LoginScreen({Key? key}) : super(key: key); @override State<LoginScreen> createState() => _LoginScreenState(); } class _LoginScreenState extends State<LoginScreen> { String username = ''; String password = ''; @override Widget build(BuildContext context) { final storage = FlutterSecureStorage(); final dio = Dio();
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
CursorPagination 제네릭 클레스 사용시 FromJson파라미너중 "T Function(Object? json) fromJsonT" 이부분이 이해가 어려워요
CursorPagination 제네릭 클레스 사용시 FromJson파라미너중"T Function(Object? json) fromJsonT" 이부분 이해가 잘되지 않습니다. 위 코드를 제레릭 클레스가 Order 일 경우 Order 클래스를 리턴하는 함수에 파라미터는 json 이며 함수의 이름은 fromJsonT 이다 라고 해석을 하는데 fromJsonT가 해당 Order.fromJson을 가르키는지 어떻게 알수있는건가요 ??fromJsonT 키워드는 JsonSerializable의 정해진 문법인지가요? 보충해 설명 해주시면 감사하겠습니다.
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
retrofit 으로 구성해봤는데 값이 전달이 안되는거 같은데
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.코드팩토리 디스코드https://bit.ly/3HzRzUMFlutter 강의를 구매하시면 코드팩토리 디스코드 서버 플러터 프리미엄 채널에 들어오실 수 있습니다! 디스코드 서버에 들어오시고 저에게 메세지로 강의를 구매하신 이메일을 보내주시면 프리미엄 채널에 등록해드려요! 프리미엄 채널에 들어오시면 모든 질의응답 최우선으로 답변해드립니다! 서버는 스프링으로 구성되어있습니다.어노테이션으로 @RequestBody HashMap<String,Object> paramMapparamMap으로 값이 전달이 안되고 있어서요. *.g.dart를 봤을때 메소드(param)이 값이 _setStreamType으로 들어가서 json으로 매핑되는걸까요??모델생성 값 set아니면 getLogin(모델전달) 하면 되는걸까요..?
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
jsonserializable
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.코드팩토리 디스코드https://bit.ly/3HzRzUMFlutter 강의를 구매하시면 코드팩토리 디스코드 서버 플러터 프리미엄 채널에 들어오실 수 있습니다! 디스코드 서버에 들어오시고 저에게 메세지로 강의를 구매하신 이메일을 보내주시면 프리미엄 채널에 등록해드려요! 프리미엄 채널에 들어오시면 모든 질의응답 최우선으로 답변해드립니다! jsonserializable대신 freezed 써도 무방한가요?
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
스플래시 스크린에서 init state 와 build 순서
강의를 보다가 궁금한 점이 있어 질문 남깁니다.init state 메소드가 build 메소드 보다 먼저 실행된다고 알고 있습니다.await 키워드를 사용하면, 비동기 함수가 완료될 때까지 기다리는 것으로 알고 있습니다. 제가 최종적으로 질문하고 싶은 부분은,await 키워드가 있으니, init state 가 순차적으로 실행될 때까지 기다릴 것이다. 결국 build 함수가 실행되기 전에 라우팅이 일어나기 때문에, splash screen 은 화면에 보여지지 않는 것이 아닌가요?
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
플러터 레포지토리 컴파일 에러
안녕하세요.Github에 공유해 주신 소스를 컴파일 하고 싶습니다.아래 그림과 같은 에러가 다수 존재합니다.환경이나 코드에 대한 수정사항을 알려주시면 감사하겠습니다.
- 미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
Platform.isIOS 오류
저는 platform을 치면 자동완성 팝업에Platform (dart:html)만 보입니다.import로 dart.io를 직접 친 후Platform.isIOS를 치면 isIOS에 빨간줄이 그어 집니다.flutter version은 3.3.4 입니다.어떻게 해야 할까요?