묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Flutter 초입문 왕초보편
102강 에뮬레이터에 지도가 안 나옵니다
지도가 안 나와서 wipe data 를 했는데도 안 나옵니다. 어떻게 해야 할까요?
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
Riverpod CodeGeneration 깃허브 링크는 어디있나요?
안녕하세요.일반 riverpod는 찾았는데Code Generation기능이 추가된 깃허브는 어디있나요?
-
미해결Flutter 입문 - 안드로이드, iOS 개발을 한 번에 (with Firebase)
파이어베이스 연결시 갑자기 다른 오류가 발생했어요 ㅠㅠ
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.* What went wrong:A problem occurred evaluating project ':app'.> Failed to apply plugin 'com.android.internal.application'. > Could not create plugin of type 'AppPlugin'. > Could not generate a decorated class for type AppPlugin. > com/android/build/api/component/Component* 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. 도움이 필요합니다 ㅠㅠ
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
insert 시에 오류가 발생합니다.
안녕하세요. 강의를 듣고 변형해서 개발해 보고 있습니다. drifrt를 통한 insert 시에 오류가 발생합니다. [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Bad state: GetIt: Object/factory with type LocalDataBase is not registered inside GetIt. 어떤 오류인지 검색을 해도 나오지가 않네요. 문제가 뭐인지 확인 좀 부탁드립니다. 감사합니다.
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
스크립트도 다운로드 할 수 있나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.코드팩토리 디스코드https://bit.ly/3HzRzUMFlutter 강의를 구매하시면 코드팩토리 디스코드 서버 플러터 프리미엄 채널에 들어오실 수 있습니다! 디스코드 서버에 들어오시고 저에게 메세지로 강의를 구매하신 이메일을 보내주시면 프리미엄 채널에 등록해드려요! 프리미엄 채널에 들어오시면 모든 질의응답 최우선으로 답변해드립니다!
-
해결됨Flutter 중급 3편 - 의존성 주입 가이드
객체가 아닌 일반 변수의 get it
안녕하세요.클린코드 3탄을 수강하고 너무 만족스러워서 이번 추석에 2탄을 추가로 수강했습니다. ㅎㅎ 2탄에서 뷰모델이 생성될 때 직접 데이터를 넣으시더군요.(객체가 아닌 일반 변수)평소에 뷰모델이 생성될 때 객체가 아닌 변수도 같이 바로 넣으려고 했으나 클래스(객체)가 아니기 때문에 매번 뷰를 생성하고 initstate 에서 lazy 하게 뷰모델에 데이터를 업데이트 했었습니다. 여기서 의문이 생겨서 질문 드립니다. 객체가 아닌 일반 변수에 대해서도 의존성 주입을 하는 것이 옳은 것인가요?만약 일반 변수에 대해서도 의존성 주입을 해야한다면(해도 된다면) getit 설정에서 어떻게 접근 하면 좋을 까요?늦은 시간에 죄송합니다. 답변 주시면 감사하겠습니다.!!
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
video 버튼 만들기에서 Stack 이 잘안됩니다.
import 'dart:io'; import 'package:flutter/material.dart'; import 'package:image_picker/image_picker.dart'; import 'package:video_player/video_player.dart'; class CustomVideoPlayer extends StatefulWidget { final XFile video; const CustomVideoPlayer({required this.video, super.key}); @override State<CustomVideoPlayer> createState() => _CustomVideoPlayerState(); } class _CustomVideoPlayerState extends State<CustomVideoPlayer> { // 비디오 플레이어 같은 경우 컨트롤러를 사용해서 위젯을 구성해 줘야한다. VideoPlayerController? videoController; @override void initState() { super.initState(); initializeController(); } initializeController() async { videoController = VideoPlayerController.file( File(widget.video.path), // 이미지 피커에서 가져온 XFile 이랑 형식이 같지않아 dart:io 에 File에다가 변경해줘서 넣어준다. ); // 초기화하라 await videoController!.initialize(); setState(() {}); } @override Widget build(BuildContext context) { if (videoController == null) { return CircularProgressIndicator(); } return AspectRatio( // 비율 맞추는 위젯, 옵션 aspectRatio: videoController!.value.aspectRatio, child: Stack(children: [ VideoPlayer( videoController!, ), _Controler(), ]), ); } } class _Controler extends StatelessWidget { const _Controler({super.key}); @override Widget build(BuildContext context) { return Container( color: Colors.black.withOpacity(0.5), child: Row( crossAxisAlignment: CrossAxisAlignment.stretch, mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ renderIconButton( onPressed: () {}, iconData: Icons.rotate_left, ), renderIconButton( onPressed: () {}, iconData: Icons.play_arrow, ), renderIconButton( onPressed: () {}, iconData: Icons.rotate_right, ), ], ), ); } Widget renderIconButton({ required VoidCallback onPressed, required IconData iconData, }) { return IconButton( onPressed: onPressed, iconSize: 30.0, color: Colors.white, icon: Icon(iconData), ); } }해당 코드 로직입니다.!
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
플러터 [초보] 쳅터 14의 두번째강의 에서 7분20초대
안녕하세요, 코드팩토리님 질문있습니다!쳅터 14의 두번째강의 에서 7분20초대에 routetwo스크린에서 팝하면 routeone스크린으로 가야하는거 아닌가요? 왜 팝했는데 home스크린으로 가는건가요?답변 부탁드립니다!
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
문의드립니다
안녕하세요, 같은 프로젝트들을 여러번 반복해서 완전한 체득을 하고 있는데요, 반복하는데도 불구하고 프로그램 업그레이드 때문인지, 또는 알 수 없는 이유로 변화가 종종 생깁니다 ㅠ 이번엔 시작시간과 종료시간의 TextField에 null이라는 글자가 뜨는데요, 이전에는 이게 안떴던걸로 기억합니다.data가 들어있지 않은 맨 초기 화면에서도 null이라는 글자가 뜨지 않도록 하려면 어떻게 해야할까요?
-
미해결Flutter 초입문 왕초보편
에뮬레이터 실행오류
006. Android 에뮬레이터 작성 에서 실행시 위와 같은 오류가 뜹니다. 해결방법 문의합니다. 참고로 바이오스의 가상머신은 동작함을 확인했어요
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
Riverpod + Drift MVVM패턴 오류
안녕하세요 선생님!초급, 중급 강의 들으면서 riverpod 와 drift를 사용해서 MVVM패턴으로 간단한 코드를 작성 하였는데 에러가 발생하여 질문 드립니다._onTap으로 생성을 시도하면 point2번까지는 값이 잘 전달되는데 다음과 같은 오류가 발생합니다. ##### 오류 내용 #####[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: SqliteException(1299): while executing statement, NOT NULL constraint failed: counter_model.value, constraint failed (code 1299)Causing statement: INSERT INTO "counter_model" ("title") VALUES (?), parameters: TextName 답변 부탁 드리겠습니다.감사합니다!
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
StreamSubscription listen 내부에서 file copy 이슈
안녕하세요. 학습내용을 확장하는 중 이슈가 있어서 문의드립니다.윈도우 OS 타겟으로 개발 중이며,특정폴더(origin)에 파일이 생성되는 event 발생 시 다른 특정폴더(target)로 파일을 복사하는 로직을 구현했습니다.이슈는, 용량이 1kb로 작은 파일일 경우 잘 작동하지만, 용량이 몇mb 정도로 큰파일은 아래와 같은 예외가 발생하며 복사가 되지 않습니다.예외는 다음과 같습니다.Unhandled Exception: PathAccessException: Cannot copy file to 'C:\0.st\target\10.tdms', path = 'C:\0.st\origin\10.tdms' (OS Error: 다른 프로세스가 파일을 사용 중이기 때문에 프로세스가 액세스 할 수 없습니다. , errno = 32) #0 _checkForErrorResponse (dart:io/common.dart:55:9) #1 File.copy.<anonymous closure> (dart:io/fileimpl.dart:356:7) <asynchronous suspension> 제가 파일을 복사하기 위해 구현한 함수는 아래와 같습니다.중간에 newOriginFile.copy(copyFilePath); 부분에서 예외가 발생합니다.참고로 copySync 메서드로 변경해 보았으나 같은 현상이 발생합니다.복사할 대상 파일을 다른 프로세스에서 열지 않은 상태인데도 위와 같은 예외가 발생하여 디버깅이 안되는 상황입니다.항상 감사합니다!void _startEvaluationMode() { Navigator.pop(context, 'OK'); // 계측 모드 시작 setState(() { _evaluationMode = true; }); // origin 경로 불러오기 if (_directoryInfoBox.containsKey(DirectoryType.origin.name)) { setState(() { _originDirectory = Directory(_directoryInfoBox.get(DirectoryType.origin.name)!.path); }); if (!_originDirectory!.existsSync()) { // 실제 origin 경로의 폴더가 존재하지 않는 상태 // origin directory 확인하라는 alert dialog 보여주고 evaluation mode 종료 } // origin 경로 워칭 Stream<FileSystemEvent> originDirFileEvent = _originDirectory!.watch(); print('start evaluation mode'); // _streamListner = originDirFileEvent.listen((event) async { // if (event.type == 1) { // print('create event'); // } // }); _streamListner = originDirFileEvent.listen((event) { // origin 경로에 새 파일이 생성된 경우 FileSystemCreateEvent type == 1 if (event.type == 1) { print('created file: ${event.path}'); final newOriginFile = File(event.path); // 포맷에 맞는 파일 이름 생성 var newOriginFilename = p.basenameWithoutExtension(event.path); // print('base file name: ${newOriginFilename}'); String testMethodRoadName = TestMethodRoadInfoManager.getNameById(newOriginFilename); // 중복되는 이름 확인 // 파일 이름을 _ 로 분리하여 4번째 인덱스 값으로 구분 List<String> existingTestMethodRoadNameList = _evaluationItem!.evaluationFileInfos!.map((fileInfo) { return p .basenameWithoutExtension(fileInfo.evaluationFilePath) .split('_') .first; }).toList(); // print(existingTestMethodRoadNameList); // List<String> duplicatedList = existingTestMethodRoadNameList.where((name) { return name == testMethodRoadName; }).toList(); String fileNameWithDuplicateCount = ''; if (duplicatedList.isNotEmpty) { fileNameWithDuplicateCount = '${testMethodRoadName}_${duplicatedList.length + 1}'; } else { fileNameWithDuplicateCount = '${testMethodRoadName}_1'; } // print('road name: ${testMethodRoadName}'); // var copyFilePath = p.join(_itemDirectory!.path, // '${_itemFilePrefix}_${fileNameWithDuplicateCount}.tdms'); var copyFilePath = p.join( _itemDirectory!.path, '${fileNameWithDuplicateCount}.tdms'); print('copy file path: ${copyFilePath}'); // 파일을 eval item 경로로 이름 바꾸어 복사 newOriginFile.copy(copyFilePath); print('copy finish'); // eval item DB의 evaluationFileInfos 리스트 업데이트 var newEvaluationFileInfo = EvaluationFileInfo( originFilePath: event.path, evaluationFilePath: copyFilePath, activated: true, ); setState(() { _evaluationItem!.evaluationFileInfos!.add(newEvaluationFileInfo); }); // print( // 'file info length: ${_evaluationItem!.evaluationFileInfos!.length}'); _evaluationItemBox.put(_evaluationItem!.id, _evaluationItem!); // ui 상 file list, count 업데이트 List<File> files = []; for (var entity in _itemDirectory! .listSync(recursive: false, followLinks: false)) { if (entity is File) { files.add(entity); } } setState(() { _files = files; }); } }); } }
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
Text(number.toString()),
route_one_screen.dart에서요 class RouteOneScreen extends StatelessWidget { final int number; const RouteOneScreen({required this.number, super.key});int number 받는다고 했는데children: [ Text(number.toString()), ElevatedButton(Text(number) 이러게 하면 안돼나요,문자만 가능해서 그런가요
-
해결됨[Bloc 응용] 실전 앱 만들기 (책 리뷰 앱) : SNS 로그인, Firebase 적용, Bloc 상태 관리, GoRouter
17강 진행중입니다..
강의 순서대로 따라하고 있는데구글 sns 등록하고 시뮬레이터 켜보니 Class 'StatelessElement' has no instance method 'read'.Receiver: Instance of 'StatelessElement'Tried calling: read<AuthenticationCubit>() 란 오류가 뜨네요 ㅠ찾아보니 밑 login_page 중 밑 read 부분인 것 같긴한데 정확히 모르겠습니다 ㅠWidget _appleLoginBtn(BuildContext, context) { return GestureDetector( onTap: context.read<AuthenticationCubit>().appleLogin(), child: Container(
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
type 'Null' is not a subtype of type 'List<dynamic>' in type cast
섹션 11 > Pagination 일반화하기 > RatingsPagination 렌더링하기 수강 중인데 "type 'Null' is not a subtype of type 'List<dynamic>' in type cast"라서 RatingCard가 나오지 않는데 어디서 부터 확인해야할 지 모르겠습니다... ㅠㅠflutter: [RES] [GET] http://127.0.0.1:3000/restaurant/5ac83bfb-f2b5-55f4-be3c-564be3f01a5b/rating/?count=20flutter: type 'Null' is not a subtype of type 'List<dynamic>' in type castflutter: #0 $RatingModelFromJson (package:actual/rating/model/ratingmodel.g.dart:14:62)#1 new RatingModel.fromJson (package:actual/rating/model/rating_model.dart:27:62)#2 RestaurantRatingRepository.paginate.<anonymous closure> (package:actual/restaurant/repository/restaurantrating_repository.g.dart:46:29)#3 MappedListIterable.elementAt (dart:_internal/iterable.dart:415:31)#4 ListIterator.moveNext (dart:_internal/iterable.dart:344: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:47:28)#8 ListIterable.toList (dart:_internal/iterable.dart:214:7)#9 $CursorPaginationModelFromJson (package:actual/common/model/cursorpagination_model.g.dart:15:60)#10 new CursorPaginationModel.fromJson (package:actual/common/model/cursor_pagination_model.dart:44:108)#11 _RestaurantRatin<…>flutter: Instance of 'CursorPaginationModelError'
-
해결됨Flutter 앱 개발 실전
IntelliJ에서 Flutter Intl 확장 프로그램 설치 방법
다국어 구현에서 VS Code 에서는 Flutter Intl 확장 프로그램을 추가하는데 IntelliJ에서는 어떻게 하는지요?설치를 안해도 상관 없는지요?
-
해결됨Flutter 초입문 왕초보편
60강 비동기 처리 부분 문의
future를 통한 sharedpreferences에 저장할때 비동기로 처리해야할때, 향후 로직이 많아지게 될 경우 dispose가 된 이후에 controller의 값을 가져오게 되어 문제가 발생할 확률이 높아질것 같습니다. (향후에 찾기도 어려울것 같은..)이럴때 어떻게 처리하는것이 좋을까요? future 메서드가 종료된 이후에 페이지 전환이 발생하도록 할 수 있나요?
-
해결됨[Bloc 응용] 실전 앱 만들기 (책 리뷰 앱) : SNS 로그인, Firebase 적용, Bloc 상태 관리, GoRouter
cloud Firestore 설정
FireStore Database에 들어가서 데이터베이스 생성하기 누르고 설정했는데 오류가 나더니이렇게 뜨네요,, 이런 경우 어떻게 해야 할까요,,?
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
textFormField validation 질문입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.코드팩토리 디스코드https://bit.ly/3HzRzUMFlutter 강의를 구매하시면 코드팩토리 디스코드 서버 플러터 프리미엄 채널에 들어오실 수 있습니다! 디스코드 서버에 들어오시고 저에게 메세지로 강의를 구매하신 이메일을 보내주시면 프리미엄 채널에 등록해드려요! 프리미엄 채널에 들어오시면 모든 질의응답 최우선으로 답변해드립니다! 에러메세지가 뜰때 2개의 time텍스트필드 수평위치가 맞지않게 되는데 이런걸 조절 할 방법이 없는건가요? 시작시간, 마감시간 validator할때, 시작시간은 마감시간보다 숫자가 작아야 된다 라는 조건을 건다면 isTime을 isTime1, isTime2으로 세분화 해서 조건을 비교하면 되는걸까요?
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
textAlign :TextAlign.start 로 정렬하지 않는이유
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.코드팩토리 디스코드https://bit.ly/3HzRzUMFlutter 강의를 구매하시면 코드팩토리 디스코드 서버 플러터 프리미엄 채널에 들어오실 수 있습니다! 디스코드 서버에 들어오시고 저에게 메세지로 강의를 구매하신 이메일을 보내주시면 프리미엄 채널에 등록해드려요! 프리미엄 채널에 들어오시면 모든 질의응답 최우선으로 답변해드립니다! text field의 label를 정렬할때Column에 Text와 TextField의 자식이있는데label정렬시에textAlign: TextAlign.start로 적용은 안되고 Column의 crossAxisAlignment를 start로 주었습니다. textAlign이 왜 적용이 안되는지 알기위해text에다가 backgroundColor을 주었더니 딱 label글자크기만큼 차지하는것을 알수있었습니다.Widget build(BuildContext context) { return Column( crossAxisAlignment: CrossAxisAlignment.start, //세로축(주축)은 최대너비 / 가로축(반대축은 최소너비) children: [ Container( width: 900, color: Colors.red, child: Text( label, style: TextStyle( color: PRIMARY_COLOR, fontWeight: FontWeight.w600, backgroundColor: Colors.blue, ), textAlign: TextAlign.end, //??왜 이게아니고 crossAxis를 start로 정렬해야하는지.. ), ), textAlign의 사용법을 보니 Text위젯에 Container를 감싸서 너비를 준다음에 textAlign으로 정렬을 하더라고요text의 너비는 그대로 글자크기만큼이고Container의 너비에서 정렬하는게 textAlign인것 같은데 왜 Column으로 감싼 경우는 textAlign이 적용 안되는건가요?? crossAxisAlignment가 start, end 다 적용되는걸 보니 반대축(가로) 너비는 사이즈가 있는것 같아서요