묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
이 부분에서 Error: The argument type 'RestaurantDetailModel' can't be assigned to the parameter type 'RestaurantModel'.
import 'dart:convert'; import 'dart:async'; import 'package:colorfactor/common/const/data.dart'; import 'package:colorfactor/common/layout/default_layout.dart'; import 'package:colorfactor/product/component/product_card.dart'; import 'package:colorfactor/restaurant//component/RestaurantCard.dart'; import 'package:colorfactor/restaurant/model/restaurant_detail_model.dart'; import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; class RestaurantDetailScreen extends StatelessWidget { final String id; const RestaurantDetailScreen({super.key, required this.id}); Future<Map<String, dynamic>> getRestaurantDetail() async { final dio = Dio(); final accessToken = await storage.read(key: ACCESS_TOKEN_KEY); final resp = await dio.get('http://$ip/restaurant/$id', options: Options( headers: { 'authorization': 'Bearer $accessToken' }, ), ); return resp.data; } @override Widget build(BuildContext context) { return DefaultLayout( title: '불타는 덕볶이', child: FutureBuilder<Map<String, dynamic>>( future: getRestaurantDetail(), builder: (_, AsyncSnapshot<Map<String, dynamic>> snapshot) { print(snapshot.data); if (!snapshot.hasData) { return Container(); } final item = RestaurantDetailModel.fromJson( json: snapshot.data!, ); return CustomScrollView( slivers: [ renderTop( model: item, ), renderLabel(), renderProducts(), ], ); } ), ); } SliverPadding renderLabel() { return SliverPadding( padding: EdgeInsets.symmetric(horizontal: 16), sliver: SliverToBoxAdapter( child: Text( '메뉴', style: TextStyle(fontSize: 18, fontWeight: FontWeight.w500),), ), ); } renderProducts() { return SliverPadding( padding: EdgeInsets.symmetric(horizontal: 16), sliver: SliverList( delegate: SliverChildBuilderDelegate((context, index) { return Padding( padding: const EdgeInsets.only(top: 16.0), child: ProductCard(), ); }, childCount: 10, ), ), ); } SliverToBoxAdapter renderTop({ required RestaurantDetailModel model, }) { return SliverToBoxAdapter( child: RestaurantCard.fromModel( model: model, isDetail: true, ), ); } }이 강의 진행에서 SliverToBoxAdapter renderTop({ required RestaurantDetailModel model, }) { return SliverToBoxAdapter( child: RestaurantCard.fromModel( model: model, isDetail: true, ), ); } }이 부분에서 Error: The argument type 'RestaurantDetailModel' can't be assigned to the parameter type 'RestaurantModel'.이 에러가 뜹니다. 구조를 다시 따라가서 봐도 문제가 없는것 같은데, 아직 이해도가 낮아서 그런지 Detail모델이 왜 Model에 대입되는지가 이해가 안됩니다.
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
resp.data; 에러
import 'dart:convert'; import 'dart:async'; import 'package:colorfactor/common/const/data.dart'; import 'package:colorfactor/common/layout/default_layout.dart'; import 'package:colorfactor/product/component/product_card.dart'; import 'package:colorfactor/restaurant//component/CourtCard.dart'; import 'package:colorfactor/restaurant/model/restaurant_detail_model.dart'; import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; class RestaurantDetailScreen extends StatelessWidget { final String id; const RestaurantDetailScreen({super.key, required this.id}); Future<Map<String, dynamic>> getRestaurantDetail() async { final dio = Dio(); final accessToken = await storage.read(key: ACCESS_TOKEN_KEY); final resp = dio.get('http://$ip/restaurant/$id', options: Options( headers: { 'authorization' : 'Bearer $accessToken' }, ), ); return resp.data; } @override Widget build(BuildContext context) { return DefaultLayout( title: '불타는 덕볶이', child: FutureBuilder<Map<String, dynamic>>( future: getRestaurantDetail(), builder: (_, AsyncSnapshot<Map<String, dynamic>> snapshot){ print(snapshot.data); if(!snapshot.hasData){ return Container(); } final item = RestaurantDetailModel.fromJson( json: snapshot.data!, ); return CustomScrollView( slivers: [ renderTop(), renderLabel(), renderProducts(), ], ); } ), ); } SliverPadding renderLabel(){ return SliverPadding( padding: EdgeInsets.symmetric(horizontal: 16), sliver: SliverToBoxAdapter( child: Text('메뉴', style: TextStyle(fontSize: 18, fontWeight: FontWeight.w500),), ), ); } renderProducts(){ return SliverPadding( padding: EdgeInsets.symmetric(horizontal: 16), sliver: SliverList( delegate: SliverChildBuilderDelegate((context, index){ return Padding( padding: const EdgeInsets.only(top: 16.0), child: ProductCard(), ); }, childCount: 10, ), ), ); } SliverToBoxAdapter renderTop(){ return SliverToBoxAdapter( child: RestaurantCard( image: Image.asset('asset/img/2.jpg'), name: '불떡', tags: ['떡복이','맛다','치즈'], ratings: 4.5, ratingsCount: 100, distanceRange: 10, courtFee: 4000, isDetail: true, detail: '맛있는 떡복이', ), ); } }return resp.data; 부분에서 아래와 같이Error: The getter 'data' isn't defined for the class 'Future<Response<dynamic>>'.계속 에러를 반환하는데 도무지 이유를 모르겠습니다.
-
해결됨Flutter 앱 개발 실전
디자인 시스템 관련해서 문의드립니다.
안녕하세요 선생님,저번에 카톡으로 질문 드렸었던 플러터하고 싶은 1인입니다! 아, 그리고 선생님 강의 댓글 1등 당첨되서 키보드도 받았네요 ㅋㅋㅋ 🙂 저는 현재, 앱을 처음부터 차근차근 선생님 스타일로 만들어 보고자 합니다.Material3에서 색상을 넣으니, LightSchem, DarkScheme해서 엄청 많이 나오더라구요.. 근데 선생님이 만드신 것 처럼, Palette나 다른 칼라 속성들 처럼 만들고 싶은데, 혹시나 material3 후에, 선생님이 일부 필요한 것들만 빼놓은걸까요? 1)혹시나 선생님이 만드실 때, grey100, 뒤에 숫자처럼 만드실 때 규칙이 있으실까요?2) 또한, dark_theme, light_theme도 설정할 때, Material3 주소에서, dart 파일을 다운 받았을 때, 색상 정하는 규칙도 궁금합니다. 어떤 식으로 처리하신걸까요? 감사드립니다.
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
토큰 체크 MaterialPageRoute String
void checkToken() async { final refreshToken = await storage.read(key: REFRESH_TOKEN_KEY); final accessToken = await storage.read(key: ACCESS_TOKEN_KEY); if (refreshToken == null || accessToken == null) { Navigator.of(context).pushNamedAndRemoveUntil( MaterialPageRoute( builder: (_) => LoginScreen() ), (route)=> false, ); }else{ Navigator.of(context).pushNamedAndRemoveUntil( MaterialPageRoute( builder: (_) => RootTab() ), (route)=> false, ); } }강의와 동일하게 작성한 해당 코드에서 아래와 같은 오류가 생성됩니다.MaterialPageRoute<dynamic>' can't be assigned to the parameter type 'String'.
-
해결됨Flutter 앱 개발 기초
애뮬레이터 문제인지 뭐가문제인지 모르겠어요
Failed to launch Medium Phone API 35: Error: Emulator didn't connect within 60 seconds 라고 에러가 뜨고디버깅도 안되고해서 질문올려봅니다
-
미해결
Xcodebuild error 관련해서 질문드립니다!
xcode simulator ios18버전으로 업데이트 후 시뮬레이터 자체 실행에는 문제가 없는데 flutter를 실행하면다음과 같은 에러가 발생합니다. 그래서 stackoverflow를 참고하여post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) target.build_configurations.each do |build_configuration| build_configuration.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64 i386' end end end이 코드를 podfile에 추가하였으나 오류가 해결되지 않았습니다.. 이 에러를 어떻게 해결해야하나요?
-
미해결Flutter로 SNS 앱 만들기
6게시글등록화면_5Firebase Storage에 게시글 이미지 저장1인가요
String feedId = Uuid().v1(); // firestore 문서참조 DocumentReference<Map<String, dynamic>> feedDocRef = firebaseFirestore.collection('feeds').doc(feedId); // storage 참조 Reference ref = firebaseStorage.ref().child('feeds').child(feedId); 여기나오는 것들이 ('feeds').폴더 와 doc(feedId) 폴더개념인가요.
-
해결됨[Python 초보] Flutter로 만드는 ChatGPT 음성번역앱
음성 통신 테스트 안됨
음성 통신 테스트를 할때녹음을 못하는것 같습니다어떻게 해결해야하나요...?python test_total_mic.py 하면 밑에처럼 뜹니다.... 마이크 설정은 부록을 보고 켜져있는것을 확인했습니다,,,, 녹음을 시작합니다!녹음을 종료합니다.Error in sys.excepthook:Original exception was: 제가 친 코드 입니다from openai import OpenAI from pathlib import Path import sounddevice as sd from scipy.io.wavfile import write from playsound import playsoundclient = OpenAI() def record_audio(): #비트레이트 fs = 44100 seconds = 3 # 음성의 길이 print('녹음을 시작합니다!') record = sd.rec(int(seconds*fs), samplerate=fs, channels=2) sd.wait() #대기 print('녹음을 종료합니다.') audio_input_path = "audio_input.wav" write(audio_input_path,fs,record) return audio_input_pathdef conn_whisper(audio_input_path): audio_file= open(audio_input_path, "rb") transcription = client.audio.transcriptions.create( model="whisper-1", file=audio_file ) print(transcription.text) text_input = transcription.text return text_inputdef conn_chatgpt(text_input): completion = client.chat.completions.create( model="gpt-4o-mini", messages=[ {"role": "user","content": text_input} ] ) print(completion.choices[0].message.content) text_output = completion.choices[0].message.content return text_outputdef conn_tts(text_output): speech_file_path = Path(__file__).parent / "audio_output.mp3" response = client.audio.speech.create( model="tts-1", voice="alloy", input=text_output ) response.stream_to_file(speech_file_path) audio_output_path = str(speech_file_path) return audio_output_pathdef main(): #마이크 input => audio_intput_path audio_input_path = record_audio() audio_input = open(audio_input_path,"rb") text_input = conn_whisper(audio_input) text_output = conn_chatgpt(text_input) audio_output_path = conn_tts(text_output) playsound(audio_output_path) returnmain()
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
data 변수명에 대해
안녕하세요.flutter 중급 강의를 들으면서 궁금한 점이 생겨서 질문 드립니다.지금까지 수많은 변수명들을 작성해 왔는데요.그중에서 data라는 변수명들이이 클래스마다 여러곳에 배치되어 있는 느낌을 받았습니다. 그래서 헷갈려하지 않기 위해 앞의 약자를 덧붙여 자신만의 변수명을 만들어 왔습니다. ex) final List<T> data; --> final List<T> cpData;하지만 [pagination params추가하기] 강의를 듣는 도중에 테스트를 해보니E/flutter (21276): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: type 'Null' is not a subtype of type 'List<dynamic>' in type cast오류가 발생하였고 혹시 몰라서 data를 원래대로 되돌리고 실행해 보았는데 정상적으로 작동하였습니다.변수명을 바꿀뿐이였는데 타입을 NULL로 인식하는 이유가 궁금합니다.(콘솔창에 flutter pub run build_runner watch 실행중이였습니다.)
-
해결됨[Python 초보] Flutter로 만드는 ChatGPT 음성번역앱
chatgpt api 연결안되는거 같아요
섹션 3에서 chatgpt api 연결이 안되는거 같아요 python test_chatgpt.py 를 하면 선생님처럼 되지 않고 이런 오류가 뜹니다.해결 부탁드립니다...(desktop_venv) C:\desktop>python test_chatgpt.py Traceback (most recent call last): File "C:\desktop\test_chatgpt.py", line 4, in <module> completion = client.chat.completions.create( File "C:\desktop\desktop_venv\lib\site-packages\openai\_utils\_utils.py", line 274, in wrapper return func(*args, **kwargs) File "C:\desktop\desktop_venv\lib\site-packages\openai\resources\chat\completions.py", line 704, in create return self._post( File "C:\desktop\desktop_venv\lib\site-packages\openai\_base_client.py", line 1270, in post return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls)) File "C:\desktop\desktop_venv\lib\site-packages\openai\_base_client.py", line 947, in request return self._request( File "C:\desktop\desktop_venv\lib\site-packages\openai\_base_client.py", line 1051, in _request raise self._make_status_error_from_response(err.response) from Noneopenai.AuthenticationError: Error code: 401 - {'error': {'message': 'Incorrect API key provided: sk-proj-********************************************************************************************************************************************************ndYA. You can find your API key at https://platform.openai.com/account/api-keys.', 'type': 'invalid_request_error', 'param': None, 'code': 'invalid_api_key'}}
-
미해결Flutter 초입문 왕초보편
dispose 오버라이드 메소드 자동완성이 안 됩니다.
dispose 오버라이드 메소드 자동완성이 안 됩니다. 다른 자동완성은 다 제대로 작동하는데 오버라이드 메소드 자동완성이 안되네요 gpt가 하라는대로 해봤는데도 안 됩니다 어떻게 해야 할까요? 저는 현재 플러터 가장 최신 버전을 사용하고 있습니다.
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
Category Stat 데이터 로딩 문제
특정 종류만 무한 circularprogressindicator가 나옵니다. 아무리 뵈도 원인을 못찾겠는데 어떤게 이슈가 있을 수 있을까요?
-
해결됨Flutter 앱 개발 실전
수강기간 연장 문의
DevStory님 안녕하세요? 수강기간 연장 부탁드립니다.
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
해결이 안되는 에러 질문드려요.
final rawItemsList = response.data['response']['body']['items'] as List<Map<String, dynamic>>;해당 코드에서[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: type 'List<dynamic>' is not a subtype of type 'List<Map<String, dynamic>>' in type cast#0 StatRepository.fetchData (package:microdust_study/repository/stat_repository.dart:26:69)<asynchronous suspension>flutter: type 'List<dynamic>' is not a subtype of type 'List<Map<String, dynamic>>' in type cast이 에러가 계속 발생합니다....
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
List<Map<String, dynamic>> in type cast 에러가 계속 발생됩니다.
ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: type 'List<dynamic>' is not a subtype of type 'List<Map<String, dynamic>>' in type cast#0 StatRepository.fetchData (package:microdust_study/repository/stat_repository.dart:26:69)<asynchronous suspension>flutter: type 'List<dynamic>' is not a subtype of type 'List<Map<String, dynamic>>' in type cast 이 에러가 똑같이 100% 코딩을 해도 발생합니다.
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
무슨 에러인지 모르는 에러가 계속 발생됩니다.
ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: type 'List<dynamic>' is not a subtype of type 'List<Map<String, dynamic>>' in type cast#0 StatRepository.fetchData (package:microdust_study/repository/stat_repository.dart:26:69)<asynchronous suspension>flutter: type 'List<dynamic>' is not a subtype of type 'List<Map<String, dynamic>>' in type cast
-
해결됨Flutter로 SNS 앱 만들기
게시글등록화면_5Firebase Storage에 게시글 이미지 저장
이해가 잘 안돼서 다시 문의 드려요.동영상을 되풀이 해서 봐도 이해가 잘 안돼서요.String feedId = Uuid().v1();feedid는 고유한 아이디 부여하는거고, 아래요 feeds는 폴더인데 .doc(feedid)를 게시글의 feedid를 부여 하는겁니까 // firestore 문서참조DocumentReference<Map<String, dynamic>> feedDocRef =firebaseFirestore.collection('feeds').doc(feedId); 여기서 feedDocRef는 여기서 어느것을 말하는겁니까 잘 이해가 안돼서요.
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
안드로이드 스튜디오 코드 하이라이팅하고 자동완성이 안됩니다.
안녕하세요. window 사용자인데 안드로이드 스튜디오에서 main.dart 코드 위젯 하이라이팅과 자동완성이 안됩니다. dart와 flutter plugin은 설치되어 있고 혹시 제가 놓친 또 다른 plugin이 있나요?
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
실행 오류
코드팩토리 디스코드에 질문하면 더욱 빠르게 질문을 받아 볼 수 있습니다![코드팩토리 디스코드]https://bit.ly/3HzRzUM - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.e: C:/Users/jhp99/.gradle/caches/transforms-3/431ce31617111116ed092b20fb775fda/transformed/jetified-kotlin-stdlib-1.9.0.jar!/META-INF/kotlin-stdlib-jdk7.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.9.0, expected version is 1.7.1.e: C:/Users/jhp99/.gradle/caches/transforms-3/431ce31617111116ed092b20fb775fda/transformed/jetified-kotlin-stdlib-1.9.0.jar!/META-INF/kotlin-stdlib-jdk8.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.9.0, expected version is 1.7.1.e: C:/Users/jhp99/.gradle/caches/transforms-3/431ce31617111116ed092b20fb775fda/transformed/jetified-kotlin-stdlib-1.9.0.jar!/META-INF/kotlin-stdlib.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.9.0, expected version is 1.7.1.e: C:/Users/jhp99/.gradle/caches/transforms-3/c321e7444a5c731da2398570d6ef04f1/transformed/jetified-kotlin-stdlib-common-1.9.0.jar!/META-INF/kotlin-stdlib-common.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.9.0, expected version is 1.7.1.FAILURE: Build failed with an exception.* What went wrong:Execution failed for task ':app:compileDebugKotlin'.> A failure occurred while executing org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction > Compilation error. See log for more details* 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 2s┌─ Flutter Fix ──────────────────────────────────────────────────────────────────────────────┐│ [!] Your project requires a newer version of the Kotlin Gradle plugin. ││ Find the latest version on https://kotlinlang.org/docs/releases.html#release-details, then ││ update C:\Users\jhp99\AndroidStudioProjects\chool_check\android\build.gradle: ││ ext.kotlin_version = '<latest-version>' │└────────────────────────────────────────────────────────────────────────────────────────────┘Error: Gradle task assembleDebug failed with exit code 1이런 오류가 나는데 chat gpt도 돌려보고 구글링도 해봤지만 안고쳐지네요..ㅠㅠ
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
버튼 스타일링에서 Material State Property는 Depreciated?
depreciated되어 다른걸 사용 권장한다며 단어가 크로스아웃되어 나옵니다. 그래도 사용해야 할까요?