묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨Flutter 앱 개발 실전
Lang Tile
Tile( icon: 'language', title: S.current.language, subTitle: IntlHelper.isKo ? S.current.ko : S.current.en, onPressed: () => langService.toggleLang(), )안녕하세요.강의 정말 큰 도움이 되고 있습니다!Lang Tile 구현에서 onPressed 콜백에서 context.watch<LangService>().toggleLang() 으로 쓰면 왜 에러가 나는건가요,,??(아래와 같은 에러가 발생합니다..)Tried to listen to a value exposed with provider, from outside of the widget tree.This is likely caused by an event handler (like a button's onPressed) that calledProvider.of without passing listen: false.To fix, write:Provider.of<LangService>(context, listen: false);It is unsupported because may pointlessly rebuild the widget associated to theevent handler, when the widget tree doesn't care about the value.The context used was: SettingBottomSheet(dependencies: [_InheritedProviderScope<LangService?>, _InheritedProviderScope<ThemeService?>])'package:provider/src/provider.dart':Failed assertion: line 274 pos 7: 'context.owner!.debugBuilding || listen == false || debugIsInInheritedProviderUpdate'
-
해결됨Flutter로 SNS 앱 만들기
프로필 이미지 저장
저는 바로 확인할수 없는데... 좀 불편한데요. 달라진것인가요
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
초록색원안을 클릭하니 새로운 페이지로 가네요...
완성된 프로그램 상에서초록색 원안을 마우스로 클릭하니 밑에 아이콘 2개 생성되구요요 아이콘을 클릭하니 새로운 페이지로 가네요.저만 그런가 해서 문의 드립니다.이것에 대한 코드는 없었는데 궁금해서요캡처 사진 첨부합니다.
-
미해결[코드팩토리] [입문] Dart 언어 4시간만에 완전정복
4강 마지막 yield* -> yield
4강 마지막 끝날 때요//stream 사용 위해 패키지 불러와서 써야 함 import 'dart:async'; void main() { playAllStream().listen((val){ print(val); }); } Stream<int> playAllStream() async* { //yield* 뒤에 따라오는 stream의 값이 다 return 될 때까지 기다린다. yield* calculate(1); yield* calculate(1000); } Stream<int> calculate(int number) async* { for(int i=0; i<5; i++){ yield i * number; //async* 로 await를 쓸 수 있다. await Future.delayed(Duration(seconds: 1)); } } playAllStream() 여기 안에 yield* 를 yield로 바꾸면 결과가001100022000이렇게 나올거라고 하셨거든요. 이론적으로 이해는 됐는데, 코드 실행이 안되어서요.어디서 문제인지 모르겠어요.에러는 아래와 같습니다.Error: A value of type 'Stream<int>' can't be assigned to a variable of type 'int'. - 'Stream' is from 'dart:async'. yield calculate(1);
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
GoRouter v13
안녕하세요 코팩님!이제 드디어 GoRouter에 대한 강의를 들으려고 합니다.그런데 지금 GoRouter가 v13까지 업데이트 되어있네요 ㄷㄷ혹시 GoRouter v13 추가로 강의하실 계획 있으신가요??그리고 제가 v13으로 강의를 듣고 코딩을 해도 크게 문제 없을까요?
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
[질문 아님] 구글맵 안뜨시는 분들 확인해주세요~
키 및 사용자 인증 정보 > 키가 경고 아이콘 존재하면 > 체크 아이콘으로 변경해줘야 되요 (방법은 아이콘 클릭해서 제한 설정해주시면 동작됩니다.) 디버깅 한참 걸렸내요 결국 키가..
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
Snapshot.data 타입이 Obejct가 맞나요?
안녕하세요 올해부터 플러터를 열심히 공부하고자 하는 학생입니다. 이번강의에서 2가지 질문이 있습니다.1번 질문. snapshot.data 타입List<Schedule> 리스트 변수를 생성하고, snapshot.data 를 할당하려고하는데, snapshot.data의 타입이 Object?라 할당할 수 없다고 나옵니다.print(snapshot.data.runtimeType)를 찍어보면 타입이 List<Schedule> 이라고 나오는데 왜 할당할 수 없는지 알고 싶습니다. 2번 질문. snapshot.data.where 질문snapshot.data의 타입이 object?로 인식되다보니, 아래와 같이 where 기능이 작동하지 않습니다. snapshot.data 타입을 List<Schedule>로 바꿀수 없나요?
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
플러터에서 안드로이드 SDK API를 사용하려면?
안녕하세요 강사님강의를 들으며 많은 도움을 받고 있습니다.개인적인 프로젝트를 진행하면서네이티브(안드로이드) API를 사용할일이 생겼는데,이런 부분은 어떻게 접근해야하는지 알려주실수 있을까요?
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
안드로이드 스튜디오 설정 - 플러터 닥터 오류
구글링으로 해결해보려고 했는데 실패했습니다 ㅠㅠ플러터 doctor check crashed 오류랑visual studio windows 10 sdk는 installer에서 설치했는데도 안되네요..도움 부탁드립니다!! ㅠㅠㅠㅠ
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
List 타입 에러
[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: type 'List<IModelWithId>' is not a subtype of type 'List<RatingModel>?' of 'data' #0 CursorPagination.copyWith (package:codefactory_lecture/common/model/cursor_pagination_model.dart:28:14) #1 Pagination.paginate (package:codefactory_lecture/common/provider/pagination_provider.dart:91:22) <asynchronous suspension>이건 디테일 스크린에서 rating을 fetchmore로 더 불러올때 나는 에러입니다.[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: type 'List<IModelWithId>' is not a subtype of type 'List<RestaurantModel>?' of 'data' #0 CursorPagination.copyWith (package:codefactory_lecture/common/model/cursor_pagination_model.dart:28:14) #1 Pagination.paginate (package:codefactory_lecture/common/provider/pagination_provider.dart:91:22) <asynchronous suspension>그리고 이건 restaurant_screen.dart에서 쭉 내려서 데이터를 더 불러오려고 할 때 에러입니다. 둘 다 비슷한 에러입니다. state = resp.copyWith(data: [ ...pState.data, ...resp.data, ]);페이지네이션 코드 중 이 부분에 문제가 있었고, CursorPagination copyWith({ CursorPaginationMeta? meta, List<T>? data, }) { return CursorPagination<T>( meta: meta ?? this.meta, data: data ?? this.data); }여기서 List<T>? data의 타입이 맞지 않는 것 같습니다. 데이터 타입이 알맞게 각각 들어가야 할텐데, 자꾸 List<IModelWithId> 타입이 들어가는 거 같아요... 어느 부분을 고쳐야 할까요?
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
줄바꿈 관련 질문 드릴게요
일단 콤마 기준으로 줄바꿈 하는 기능을 알고 있습니다.아래 <A 코드>를 <B 코드>로 변환하는 IDE 기능이 혹시 있나 해서 여쭤봐요 (아니면 플러그인이라도..)<A 코드>ElevatedButton(onPressed: () {}, child: Text("ElevatedButton")),<B 코드>ElevatedButton(onPressed: () {}, child: Text("ElevatedButton")),
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
플러터와 스프링부트 연동 웹 시스템 개발관련 문의 드립니다.
안녕하세요다름이 아니라 업무시스템(예를들어 인사관리, 영업관리)을 개발하는데 프론트부분을 Vue가 아닌 플러터를 사용하여 개발하고 백엔드는 스프링부트이고 이런 조합으로 할려고 하는데 가능할까요? 플러터는 모바일 앱 개발에 최적화 되어 있는걸로 알고 있어서요?답변부탁드립니다 ^^
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
책과 강의
안녕하세요. 코팩님 플러터 강의 잘 듣고 있습니다.이번에 플러터 책 개정판이 나와 개정판이랑 병행하여 같이 공부하고 있습니다.지금 블로그 웹 앱 프로젝트를 공부중인데,강의와 완전히 동일한 앱을 만드는 것 같은데 강의에선 언급 안 해주신 부분이 있어서요.책 p.200에서 android/app/src/main/AndroidManifest.xml 에 인터넷 권한을 추가하는 부분이 To do 표시가 되어있는데, 사실 강의에선 권한 추가 안하고도 웹 뷰 기능을 잘 구혔했는데, 권한 추가 한 것과 안 한 것의 차이가 무엇인지 궁금합니다. 에뮬레이터에선 권한이 딱히 필요없지만 배포할 땐 필요하고 그런건지... 그리고, 책 p. 200 내용에 android/app/src/main/AndroidManifest.xml 파일에서package=~ 라고 쓰여있는 줄은 오타인가요? 파일에서 package 단어를 못 찾겠어서요..검색해봐서 어디다가 추가해야되는지는 알았습니다만, 오타인지가 궁금합니다. 플러터 버전은 3.13.9썼습니다.
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
섹션18 동영상플레이어 버그 질문
다른영상 불러와도 실행하기 전까지는 이전 영상의 음성이 계속 나옴니다.즉, 영상 실행 하는 상태에서 다른 영상 불러오고, 실행 버튼 누르지 않았는데 음성은 이전 영상 음성이 나옵니다. 버그 같아서 올립니다영상파일을 음성이 나오는 파일로 해보면 쉽게 알수 있습니다.2번째는 음성이 아주 적게 들리고 있어서 음성 조절 기능 을 넣코 싶은데 어딜 바꾸면 조을까요.
-
해결됨[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
토큰을 하드코딩해서 임시로 사용하려고 하는데 안되네요 ㅠㅠ
결론적으로 JWT토큰도 서버측 페이지(예, index.php)에 하드코딩해서 클라인언트 앱으로 전송할 수 있네요... 문제의 핵심은 제가 임시로 구축한 서버(아파치 웹서버)로 요청하는 주소 끝에 정확한 페이지 주소를 붙이든(예,http://제 도메인 주소/auth/token/index.php) 아니면 http://제 도메인 주소/auth/token/와 같은식으로 끝에 "/"는 꼭 붙여야지 응답을 받을 수 있는데, 제가 강의를 따라서 그대로 요청하는 주소를 아래와 같이 끝에 "/"를 붙이지 않고 Dio 요청을 했기 때문에 생기는 문제였습니다.http://제 도메인 주소/auth/tokenhttp://제 도메인 주소/auth/login 여전히 POSTMAN으로 요청을 테스트해보면, POSTMAN에서는 요청하는 주소 끝에 "/"붙이지 않더라도정상적으로 응답을 받을 수 있는데, 왜 Dio로 요청했을 때는 응답을 받을 수가 없는지는 알수가 없지만혹시라도 저하고 똑같은 문제를 겪으시는 분이 계실까봐 글남깁니다...^^;; ................................ 이하 기존 작성했 던 글.......................안녕하세요? 너무 초보적인 질문같아서 좀 창피하기도 한데, 다름이 아니고, 중급강의 최종 소스를 바탕으로 제가 예전에 만들어 보고 싶었던 앱을 만들려고 하고 있습니다.백엔드는 예전에 PHP를 좀 다뤄본적이 있어서 일단은, 그래도 친숙한 PHP로 백엔드를 만들어볼려고 하는데,로그인 단계부터 잘 진행이 안되네요..ㅠㅠ 강사님 강의 덕분에 JWT 및 토큰 관리 개념을 배워서 이걸 나중에 PHP로 구현해볼려고는 하고 있기는 한데,우선 flutter로 앱 만드는 것에 집중하고 싶어서, 일단은 앱에서 로그인 요청을 하면 서버측 페이지에 "하드코딩"한 JWT 토큰 정보를 사용자측 앱으로 전달되게해서 로그인을 할 수 있게 하고 싶은데, 아무리 해도 로그인이 안되네요. 제가 임시로 구축한 사이트에 강의에 맞춰서 아래 경로를 맞췄고http://제 도메인 주소/auth/login이 페이지를 호출하면 POSTMAN에서 로그인 후 응답받았던 아래 토큰을 복사해서페이지에 담은 후클라이언트 앱으로 전달되게 했는데 아무리 해도 로그인이 안되고 에러가 뜹니다. { "refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InRlc3RAY29kZWZhY3RvcnkuYWkiLCJzdWIiOiJmNTViMzJkMi00ZDY4LTRjMWUtYTNjYS1kYTlkN2QwZDkyZTUiLCJ0eXBlIjoicmVmcmVzaCIsImlhdCI6MTcwNjI1ODYwMCwiZXhwIjoxNzA2MzQ1MDAwfQ.dvMz8WgEk-28q3F2J4E5CLLUURO1w8S7MlgqGje5ils", "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InRlc3RAY29kZWZhY3RvcnkuYWkiLCJzdWIiOiJmNTViMzJkMi00ZDY4LTRjMWUtYTNjYS1kYTlkN2QwZDkyZTUiLCJ0eXBlIjoiYWNjZXNzIiwiaWF0IjoxNzA2MjU4NjAwLCJleHAiOjE3MDYyNTg5MDB9.lnCJ7Okwvk1xh2WNz8n4oXbHWczy1H72sVb4znOXWUs" } 제 짧은 소견으로는 어찌되었건 클라이언트앱으로 토큰 정보가 전송되면 로그인이 진행되어야 할 텐데안되는 이유가 무엇인지 모르겠습니다... ............................................... 위의 질문을 쓰고, 몇가지 더 테스트를 해본 결과를 종합하면,Dio에서 JWT형식으로 된 토큰(하드코딩한 토큰)이 담긴 응답은 내부적으로 어떤 검증 절차를 거쳐서오류를 일으키는 것 같습니다. 오류는 다음과 같은 오류가 뜨는데,다른 페이지는 아래와 같은 오류가 뜨지 않고 제대로 정보를 수신합니다. I/flutter (22276): Dio 에러 상세정보:I/flutter (22276): 타입: DioErrorType.responseI/flutter (22276): 메시지: Http status error [301]I/flutter (22276): 에러: Http status error [301]I/flutter (22276): 응답: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">I/flutter (22276): <html><head>I/flutter (22276): <title>301 Moved Permanently</title>I/flutter (22276): </head><body>I/flutter (22276): <h1>Moved Permanently</h1>I/flutter (22276): <p>The document has moved <a href="http://제 도메인 주소/auth/token/">here</a>.</p>I/flutter (22276): </body></html> 결론적으로 하드코딩된 JWT 토큰은 Dio 패키지를 통해서 정상적으로 응답을 수신할 수 없으며,JWT 토큰을 제대로 서버측에서 수신하려면 서버측에 JWT 토큰을 제대로 인증하고 발급할 수 있게구축을 해야한다로 귀결되는 것 같습니다. 이러한 결론이 맞을까요? 이 /auth/login/auth/login
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
agora api
안녕하세요! 강의 + API 공식문서 보면서 따라하는중입니다. 혹시 많은 API중 혹시 아고라 API를 선택하신 이유가 궁금합니다. 비슷한 videoSDK나, ZOOM도 API를 제공하는걸 확인했는데 많은 개발자분들이 agora를 사용하시고 계셔서 큰 이유가 있으신지 궁금합니다.덕분에 공식문서도 같이 공부하고 있어요~
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
CursorPagination<dynamic> 타입관련 오류나시는 분들..
Restaurant_screen.dart에서 스크롤시type 'CursorPagination<dynamic>' is not a subtype of type 'CursorPagination<RestaurantModel>' in type cast오류나시는 분들 다다음 강의에서 오류 해결 방법 나옵니당
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
수업자료문의
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요.수업시간에 진행되는 코드를 받을 수 있는 링크 문의드립니다.없으시다면 메일로 전달 부탁 드립니다.코드팩토리 디스코드https://bit.ly/3HzRzUMFlutter 강의를 구매하시면 코드팩토리 디스코드 서버 플러터 프리미엄 채널에 들어오실 수 있습니다! 디스코드 서버에 들어오시고 저에게 메세지로 강의를 구매하신 이메일을 보내주시면 프리미엄 채널에 등록해드려요! 프리미엄 채널에 들어오시면 모든 질의응답 최우선으로 답변해드립니다!
-
미해결[코드팩토리] [입문] Dart 언어 4시간만에 완전정복
쿠폰 적용 안되는데 혹시 수량이 정해져 있는건가요?
9363-87b86b17809c쿠폰 코드로 적용해봤는데 안되서요 ㅠ
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
안드로이드 에뮬레이터 403 에러
E/flutter ( 9967): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: DioException [bad response]: This exception was thrown because the response has a status code of 403 and RequestOptions.validateStatus was configured to throw for this status code. E/flutter ( 9967): The status code of 403 has the following meaning: "Client error - the request contains bad syntax or cannot be fulfilled" E/flutter ( 9967): Read more about status codes at https://developer.mozilla.org/en-US/docs/Web/HTTP/Status E/flutter ( 9967): In order to resolve this exception you typically have either to verify and fix your request code or you have to fix the server code. E/flutter ( 9967): E/flutter ( 9967): #0 DioMixin.fetch.<anonymous closure> (package:dio/src/dio_mixin.dart:507:7) E/flutter ( 9967): #1 _FutureListener.handleError (dart:async/future_impl.dart:180:22) E/flutter ( 9967): #2 Future._propagateToListeners.handleError (dart:async/future_impl.dart:858:47) E/flutter ( 9967): #3 Future._propagateToListeners (dart:async/future_impl.dart:879:13) E/flutter ( 9967): #4 Future._completeError (dart:async/future_impl.dart:655:5) E/flutter ( 9967): #5 _SyncCompleter._completeError (dart:async/future_impl.dart:63:12) E/flutter ( 9967): #6 _Completer.completeError (dart:async/future_impl.dart:27:5) E/flutter ( 9967): #7 Future.any.onError (dart:async/future.dart:618:45) E/flutter ( 9967): #8 _RootZone.runBinary (dart:async/zone.dart:1666:54) E/flutter ( 9967): #9 _FutureListener.handleError (dart:async/future_impl.dart:177:22) E/flutter ( 9967): #10 Future._propagateToListeners.handleError (dart:async/future_impl.dart:858:47) E/flutter ( 9967): #11 Future._propagateToListeners (dart:async/future_impl.dart:879:13) E/flutter ( 9967): #12 Future._completeError (dart:async/future_impl.dart:655:5) E/flutter ( 9967): #13 Future._asyncCompleteError.<anonymous closure> (dart:async/future_impl.dart:745:7) E/flutter ( 9967): #14 _microtaskLoop (dart:async/schedule_microtask.dart:40:21) E/flutter ( 9967): #15 _startMicrotaskLoop (dart:async/schedule_microtask.dart:49:5)IOS 시뮬레이터로 잘만 해왔다가, 안드로이드 에뮬로도 잘 되는지 확인해보려고 했는데 로그인 할 때 403에러가 뜨네요... 어떻게 해결해야 할까요? // localhost const emulatorIP = '10.0.2.2:3000'; const simulatorIP = '127.0.0.1:3000'; final ip = Platform.isAndroid ? emulatorIP : simulatorIP;