묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[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에 들어가서 데이터베이스 생성하기 누르고 설정했는데 오류가 나더니이렇게 뜨네요,, 이런 경우 어떻게 해야 할까요,,?
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
textFormField validation 질문입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.코드팩토리 디스코드https://bit.ly/3HzRzUMFlutter 강의를 구매하시면 코드팩토리 디스코드 서버 플러터 프리미엄 채널에 들어오실 수 있습니다! 디스코드 서버에 들어오시고 저에게 메세지로 강의를 구매하신 이메일을 보내주시면 프리미엄 채널에 등록해드려요! 프리미엄 채널에 들어오시면 모든 질의응답 최우선으로 답변해드립니다! 에러메세지가 뜰때 2개의 time텍스트필드 수평위치가 맞지않게 되는데 이런걸 조절 할 방법이 없는건가요? 시작시간, 마감시간 validator할때, 시작시간은 마감시간보다 숫자가 작아야 된다 라는 조건을 건다면 isTime을 isTime1, isTime2으로 세분화 해서 조건을 비교하면 되는걸까요?
-
미해결[2024 최신] [코드팩토리] [초급] 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 다 적용되는걸 보니 반대축(가로) 너비는 사이즈가 있는것 같아서요
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
dio HTTP 요청 결과 처리
안녕하세요! dio 활용한 http 요청 처리에 대해 질문이 있습니다. 해당 프로젝트의 경우 http 요청의 response body에 맞는 model을 jsonSerializable로 생성하고, 해당 model을 return type으로 갖는 함수를 repository에 선언하여 response body를 model.fromJson 형태로 가져오는 걸로 이해했습니다. 하지만 이 경우 response body가 기존에 선언한 model의 형태와 동일한 경우에만 fromJson으로 받아올 수 있고, 다른 에러 코드 등(400 BAD_REQUEST)에 의해 response body가 다른 형태로 오게 된다면 처리가 불가능 할 것 같습니다. 이런 경우 프론트엔드에서 요청 처리를 어떻게 진행해야 하나요? repository의 함수에서 response.data 만 return 해주는 경우 해당 함수를 호출하는 다른 provider에서는 예외 처리가 어려울 것 같아서 질문드립니다!
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
캘린더 예제에서 한글 입력이 이상합니다.
캘린더 예제를 다 완성해서 돌려보고 있는데요.잘 돌아가는 거 같은데SW 키보드를 통한 입력도 그렇고HW 키보드를 통한 입력도 한글이 완성 조합이 안됩니다.정상) 테스트비정상) ㅌ ㅔ ㅅ ㅡ ㅌ ㅡ뭐가 문제일까요?
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
RestaurantDetail 캐싱
Restaurant 와 RestaurantDetail 가 서로 연결될 수 있게 설계를 했기 때문에, detail 캐싱이 가능한걸까요?현업에서 강의와 다르게 설계가 되어 있다면 별도의 상태를 하나 더 만들어야 할까요?==== 억지 가정 ====현업에서Restaurant 의 이미지는 thumbUrl 로, RestaurantDetail 의 이미지는 detailThumbUrl 로 설계가 되어 있다는 가정
-
미해결플러터와 장고로 1시간만에 퀴즈 앱/서버 만들기 [무작정 풀스택]
혹시 강의 따라하시려는 분들
RaisedButton 은 ElevatedButton 으로 변경 되었고 스타일 폼 주는 것도 조금 바뀌었습니다 참고하세요
-
해결됨[Bloc 응용] 실전 앱 만들기 (책 리뷰 앱) : SNS 로그인, Firebase 적용, Bloc 상태 관리, GoRouter
authentication_repository.dart 오류 질문합니다.
구글 로그인 버튼을 누르면 이런 오류가 뜨는데뭐가 잘못된 걸까요??
-
해결됨[Bloc 응용] 실전 앱 만들기 (책 리뷰 앱) : SNS 로그인, Firebase 적용, Bloc 상태 관리, GoRouter
signup_page.dart 오류 질문있습니다.
프로필 이미지 업로드 기능 개발 강의 듣는 중위와 같은 오류가 나는데어디 부분을 확인해야 할까요?
-
해결됨[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
섹션 15/ imagePicker 사용해보기/ 2:27초 부분 계속 오류가 나서요 도와주세요 선생님~
(사진)
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
캘린터만들기 오류질문입니다.
수업을 계속 반복해서 암기하고 있습니다.달력 수업도 현재까지 10번 이상 반복하고 있는 것 같은데요,일주일전만해도 잘 완성됐었습니다.그런데 오늘 flutter pub run build_runner build를 하려고 하니, g.dart 파일 생성이 안되고 이렇게 에러가 뜹니다.버전 문제인가 싶어 flutter upgrade도 해보고 여러 세팅값들을 버전에 맞도록 업그레이드 시도해봤는데 그래도 여전히 같았습니다.혼자 해결방법을 찾으려고 몇시간째 서치해봤는데 방법을 못찾겠네요, 조언 부탁드립니다. PS C:\Users\haK\StudioProjects\calendarmaking> flutter pub run build_runner buildDeprecated. Use dart run instead.Resolving dependencies... (1.0s)Got dependencies.Building package executable... (6.8s)Failed to build build_runner:build_runner:../../AppData/Local/Pub/Cache/hosted/pub.dev/watcher-1.0.2/lib/src/constructable_file_system_event.dart:7:57: Error: The class 'FileSystemEvent' can't be extended, implemented, or mixed in outside of its library because it's a sealed class.abstract class _ConstructableFileSystemEvent implements FileSystemEvent {
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
실제 핸드폰을 연결해 확인해보니 폰트 사이즈가 틀린 문제
안녕하세요!현재 서비스 개발중인데요, 기획과 디자인을 업무로 시작해 사정상 개발까지 하게되었는데요, 선생님 강의가 정말 많이 도움이 되고 있습니다! 감사합니다. 작업을 하다 보니 실제 폰에 연결해서 확인해보고 싶어 연결을 해보았습니다. (애플 아이폰 12 프로) 그런데 플러터 ios 시뮬레이터 아이폰 12 프로 보는것 폰트사이즈가 다르게 나옵니다. 어떻게 하면 시뮬레이터에와 동일하게 실제 핸드폰에서 확인할 수 있을까요?동일한 문제를 겪고 있는 유저를 찾았는데요, 댓글 어떤 유저는 이렇게 해결 했다고 하는데 이렇게 하면되는걸까요? 이해를 하고 싶은데 잘 안되서요!MediaQeury.of(context).copyWith(texScaleFactor: 1.0), child: child!, 이렇게 작성하니 해결 되었다고 해서 적용해보니 해결이 되긴 합니다. ㅠㅠ깃헙원문https://github.com/flutter/flutter/issues/55956void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return ScreenUtilInit( designSize: Size(390, 844), minTextAdapt: true, builder: (_, child) { return MaterialApp( builder: (context, child) { return MediaQuery( data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0), child: child!, ); }, title: 'BOOTHAPP', theme: ThemeData( appBarTheme: const AppBarTheme( color: ColorStyle.backGround, )), home: Realhome2(), ); }, ); } }
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
만료된 refreshToken으로 요청할때의 문제, try catch가 작동하지 않는듯?
void checkToken() async { final refreshToken = await storage.read(key: REFRESH_TOKEN_KEY); final accessToken = await storage.read(key: ACCESS_TOKEN_KEY); final dio = Dio(); try { final resp = await dio.post( 'http://$ip/auth/token', options: Options( headers: { 'authorization': 'Bearer $refreshToken', }, ), ); await storage.write( key: ACCESS_TOKEN_KEY, value: resp.data['accessToken']); // if (!mounted) return; Navigator.of(context).pushAndRemoveUntil( MaterialPageRoute( builder: (_) => const RootTab(), ), (route) => false); } catch (e) { print('e: $e'); // if (!mounted) return; Navigator.of(context).pushAndRemoveUntil( MaterialPageRoute( builder: (_) => const LoginScreen(), ), (route) => false); // 뒤로가기 버튼을 눌러도 다시 로그인 화면으로 돌아가지 않음 } }이 로직이 원래 잘됬는데 몇일 사용안하다가 다시키니까 dio.post 부분에서 401에러가 발생하는데이는 만료된 refreshToken으로 요청해서 발생하는 에러로 예상했습니다.그런데 try catch로 감쌋기때문에 catch아래 로그인스크린으로 이동하는 로직이 실행되어야 한다고 생각됬는데예상과 다르게 그냥 앱은 먹통이되고 dio 패키지 내부로 이동되며 401에러를 표시합니다.임시로 로그인스크린을 강제로 띄워서 다시 토큰을 발행해서 해결했습니다만왜 이런 상황이 발생하는지 잘이해가 되지않아서 질문드립니다.
-
해결됨GetX 기반 Flutter 앱 만들기
강의자료는 어디서 다운 받나요?
강의자료는 어디서 다운 받나요? 마지막 부분에 예제 소스만 있던데, 동영상에서 보여주신 강의 내용들 (PPT로 보이는 내용들)어디서 다운 받는지요?
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
12 섹터를 보고 있습니다.
class _Header extends StatelessWidget { final VoidCallback onPressed; const _Header({required this.onPressed, super.key});플러터 버젼때문에 그런가요.에러가 났는데 저는 상의 버젼이라서 그런가요.?const _Header({required this.onPressed, Key? key,}) : super(key: key);
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
authProvider로 루트설정시에, 스플래시화면에서 일정작업을 수행하고싶으면 어떻게 해야하나요?
authProvider로 루트 설정하는거 정말 최고예요..!!항상 좋은 강의에 감사드립니다!강의 듣다가 하나 궁금한 점이 있는데, 보통 스플래시 화면에서 데이터를 미리 불러온다던지 일부러 1-2초 일정한 딜레이를 건다거나 스플래시에 움직이는 애니메이션을 넣는 경우에는 이런 authProvider에서 어떻게 해결해야하나요? redirectLogic 안에서 isInitialized라고 지정해둔 변수를 이용해서 해봤는데 이게 맞는지ㅠ 좀 더러운거같아서 여쭤봅니다!Future<String?> redirectLogic( BuildContext context, GoRouterState state) async { if (!isInitialized) { isInitialized = true; return '/splash'; } if (isInitialized) { await Future.wait([ Future.delayed(const Duration(seconds: 1)), // 1초 지연 ]); } final UserBase? user = await ref.read(userProvider); // print('redirectLogic - user : ${user.toString()}'); final loggingIn = state.location == '/login'; // 유저 정보가 없는데 // 로그인중이면 그대로 로그인 페이지에 두고 // 만약에 로그인중이 아니라면 로그인 페이지로 이동 if (user == null) { return loggingIn ? null : '/login'; } if (user is UserModel && loggingIn || state.location == '/splash') { // 여기서 미리 가져오면 좋을 데이터를 가져오기 } // user가 null이 아님 // UserModel // 사용자 정보가 있는 상태면 // 로그인 중이거나 현재 위치가 SplashScreen이면 // 홈으로 이동 if (user is UserModel) { return loggingIn || state.location == '/splash' ? '/' : null; } // UserModelError if (user is UserError) { return !loggingIn ? '/login' : null; } return null; }