묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨Flutter로 SNS 앱 만들기
UI - State - Provider - Repository의 관계
안녕하세요. 기존에 제가 코딩할 때는 provider 파일에서 모든 동작, 상태변화를 한번에 처리했는데, 이 강좌에서는 이를 세분화하여 state, provider, repository 파일로 나눈 것 같습니다. 제가 초보여서 잘 모르겠지만, 플러터 업계에서는 이러한 작업패턴이 존재하는 것인가요? 정확한 명칭이 있나요? 제가 각 파일의 역할을 이해하지 못해서 구글링을 해봐도 원하는 답변을 찾을 수가 없어서 문의드립니다. 혹시 UI - State - Provider - Repository 관계를 개념적으로 설명해주시면 많은 도움 될 것 같습니다.
-
미해결플러터와 장고로 1시간만에 퀴즈 앱/서버 만들기 [무작정 풀스택]
사진 파일
안녕하세요 퀴즈 이미지 파일 올려놓았다고 하셨는데 이미지 파일 어디에 있는건가요? 못찾겠어서..
-
해결됨Flutter로 SNS 앱 만들기
firebase연동 에서 에러가 발생했어요.. 도움좀 부탁합니다
fierbase연동에 에러가 발생했어요.2번째 꺼 복사해서 실행 했는데 에러가 났어요.경로 문제인듯 한데요 모르겠습니다.
-
해결됨Flutter로 SNS 앱 만들기
저는 똑같이 다르네요.플러그인 설치편 보고있습니다
(사진)
-
해결됨Flutter로 SNS 앱 만들기
dart data class
dart data class 저는 없네요. 어떻게 진행하면 될까요
-
해결됨Flutter로 SNS 앱 만들기
직접 null일 경우를 작성한 경우
이렇게 직접적으로 null인 경우의 로직을 작성해주니깐 작동이 되긴 한데, Moo님처럼 그냥 isEqualTo만 사용해서는 여전히 안 되네요. 해결은 했지만 원인이 궁금합니다..!
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
파이어베이스 이미지 업로드 질문
이미지 서버로 firebase를 선택했는데 업로드 속도가 많이 느려 로글르 살펴보니 error getting token java.util.concurrent.ExecutionException: com.google.firebase.internal.api.FirebaseNoSignedInUserException: Please sign in before trying to get a token.''Error getting App Check token; using placeholder token instead. Error: com.google.firebase.FirebaseException: No AppCheckProvider installed.W/NetworkRequest(16203): no auth token for request' 위와 같은 두 에러가 뜨네요.. 구글에 검색해도 잘 안나와서 질문 남깁니다. 위와 같은 에러를 마주친 경험이 있을까요??
-
해결됨Flutter로 SNS 앱 만들기
isEqualTo 부분
강의를 잘 따라오던 도중, feed_repository의 getFeedList함수에서 isEqualTo 부분(1분41초)에서 uid는 nullable이므로feedScreen에서는 자동으로 null값이 들어가면서 모든 게시물들을 띄워줄거라고 하셨는데, 말씀은 이해가 되지만현재 제 앱에서는 '게시물이 존재하지 않습니다.' 화면이 뜨네요. profile_screen에서는 잘 작동이 됩니다만, 혹시 feedScreen이나 feedProvider 부분에서 추가로 작성해줘야 하는 코드가 있을까요?
-
해결됨[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
assets 자료 어디서 받을 수 있습니까?
섹션 1, ui 강의 듣고 있는데요. 폰트 같은 자료는 어디서 받을 수 있습니까?
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
질문있습니다.
basket screen에서 appBar에 뒤로가기 기능을 입혀보려고 합니다. 다른 페이지들은 가능한데, 장바구니 페이지에서는 뒤로가기 기능이 안되더라고요, paginationListview로 씌우고 <BasketITemModel>를 넣으려고 해서 안되는 것 같은데요, 이게 가능하도록 하려면 어떻게 해야할까요?
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
강의 정리 자료같은것도 제공되면 정말 지구 1등 플러터 강의가 될거같아요
플러터 기본편 완강하고 너무 만족해서 중급도 들으러왔어요+_+ 근데 강의 내용을 정리한 PDF자료가 있으면 어떨까 하는 생각이 자꾸 들어요.... 이런것도 있으면 정말 지구 1등의 플러터 강의가 될 것 같아요! ! 있어야 한다 이건 아니고 그냥 수강생 한명의 의견입니다..... - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.코드팩토리 디스코드https://bit.ly/3HzRzUMFlutter 강의를 구매하시면 코드팩토리 디스코드 서버 플러터 프리미엄 채널에 들어오실 수 있습니다! 디스코드 서버에 들어오시고 저에게 메세지로 강의를 구매하신 이메일을 보내주시면 프리미엄 채널에 등록해드려요! 프리미엄 채널에 들어오시면 모든 질의응답 최우선으로 답변해드립니다!
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
처음부터 듣지않고, 중급만 듣고 있는데 문제가 있습니다.
중급부터 듣기 시작하니, 강의중에 말씀하신 이미지 같은것들을 어디서 받을수 있을까요? 코드팩토리 디스코드https://bit.ly/3HzRzUMFlutter 강의를 구매하시면 코드팩토리 디스코드 서버 플러터 프리미엄 채널에 들어오실 수 있습니다! 디스코드 서버에 들어오시고 저에게 메세지로 강의를 구매하신 이메일을 보내주시면 프리미엄 채널에 등록해드려요! 프리미엄 채널에 들어오시면 모든 질의응답 최우선으로 답변해드립니다!
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
안드로이드로 테스트 할 때 에러
영상 5분대에 ImagePicker를 실행하려고 할 때쯤에안드로이드 실기기에 테스트 해보면 이런 에러가 나오네요 ㅠ 검색해서 하라는 대로 해봐도 잘 안돼서 질문 드립니다. 환경은 윈도우에서 사용하는 중입니다. 추가로 비디오 플레이어 프로젝트 생성은 회사 맥으로 했고 집에서 윈도우로 이어서 작업하는 건데 이 부분에서 이슈가 있을까요?
-
해결됨Flutter 앱 개발 기초
CatService 를 수정해보고 싶은데 잘 안되어 도움 요청드립니다.
안녕하세요. CatService 를 Riverpod 로 변경해보고 싶은데 잘 안되어 도움 요청드립니다.class CatService extends ChangeNotifier { // 고양이 사진을 담을 변수 List<String> catImages = []; // 좋아요 사진 List<String> favoriteImages = []; Dio dio = Dio(); SharedPreferences prefs; // 생성자 CatService(this.prefs) { dio.interceptors.add(LogInterceptor()); dio.interceptors.add(CustLogInterceptor()); getRandomCatImages(); favoriteImages = prefs.getStringList(FavoriteImage_KEY) ?? []; } void getRandomCatImages() async { Response resp = await dio.get( 'https://api.thecatapi.com/v1/images/search?limit=10&mime_types=jpg'); print(resp.data); for (int i = 0; i < resp.data.length; i++) { final map = resp.data[i]; catImages.add(map['url']); // url만 추출하여 catImages 에 이미지 추가. } notifyListeners(); } // 좋아요 토글 void toggleFavoriteImage(String catImage) { if (favoriteImages.contains(catImage)) { favoriteImages.remove(catImage); // 이미 좋아요한 경우 제거 } else { favoriteImages.add(catImage); // 새로운 사진 추가 } notifyListeners(); // 새로고침 } }위 코드를 아래와 같이 Riverpod 로 변경해보고 싶습니다.final dioProvider = Provider<Dio>((ref) { final dio = Dio(); dio.interceptors.add(LogInterceptor()); return dio; });final catImageProvider = NotifierProvider<CatImageNotifier, List<String>>(CatImageNotifier.new); final favoriteImageProvider = NotifierProvider<FavoriteImageNotifier, List<String>>(FavoriteImageNotifier.new); class CatImageNotifier extends Notifier<List<String>> { // 고양이 사진을 담을 변수 List<String> catImages = []; @override List<String> build() => []; void getRandomCatImages() async { final resp = await ref.read(dioProvider).get( 'https://api.thecatapi.com/v1/images/search?limit=10&mime_types=jpg'); for (int i = 0; i < resp.data.length; i++) { final map = resp.data[i]; catImages.add(map['url']); // url만 추출하여 catImages 에 이미지 추가. } state = catImages; } } class FavoriteImageNotifier extends Notifier<List<String>> { // 좋아요 사진 //List<String> favoriteImages = []; @override List<String> build() => []; // 좋아요 토글 void toggleFavoriteImage(String catImage) { if (state.contains(catImage)) { state.remove(catImage); // 이미 좋아요한 경우 제거 } else { state.add(catImage); // 새로운 사진 추가 } } }배열이 2개라서 두개의 Notifier 를 상속받은 클래스로 나눠야 할 것 같은 생각이 들어 나눠보려고 하는데 잘 안됩니다.어떻게 수정해야 되는지 도움 부탁드립니다.Class 를 하나 만들어서 id, imgUrl, isFavorite 3개의 칼럼으로 구분을 지어서 하면 해결될지 고민되기도 합니다.
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
main 함수에서 async/await를 사용하는 이유가 궁금합니다
main 함수에서 async/await가 없더라고순차적으로 아래처럼 수행이될거같은데async/await가 필요한 이유가 무엇인지 궁금합니다WidgetsFlutterBinding.ensureInitialized(); initializeDateFormatting(); runApp
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
iPhone simulator의 아래와 같은 오류
[ERROR:flutter/shell/platform/darwin/graphics/FlutterDarwinContextMetalImpeller.mm(42)] Using the Impeller rendering backend. 코팩님. 실행은 정상적으로 되지만 위와 같은 오류가 있는데 인터넷 검색해 보니 프로그램에서 바꾸면 된다고 나오는데, 근본적인 해결책은 없을까요? 셋팅 등에서..
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
orderProvider 관련 질문이 있습니다.
선생님 안녕하세요. 완강 후 코드 뜯어보면서 복습 중입니다:) 주문 탭 클릭 시 곧바로 주문한 최신 리스트를 볼 수 있게하는 방법을 고민하다가 orderProvider를 들여다 보았는데요.곰곰히 생각해보니 postOrder만 해서는 orderProvider(orderStateNotifier)의 상태가 업데이트가 안되는 거 아닌가 하는 생각이 들었습니다. 그래서 forceRefetch하는 것처럼, postOrder 함수 하단에 true 반환하기 전에 paginate()를 실행하여 주문 탭 클릭시 곧바로 최신 리스트 뜨도록 했습니다.Future<bool> postOrder() async{ try{ final uuid = Uuid(); final id = uuid.v4(); final state = ref.read(basketProvider); final resp = await repository.postOrder( body: PostOrderBody( id: id, products: state.map((e) => PostOrderBodyProduct(productId: e.product.id, count: e.count)).toList(), totalPrice: state.fold(0, (pre, next) => pre + (next.product.price * next.count)), createdAt: DateTime.now().toString())); paginate(); return true; } catch(e){ return false; } }이렇게 하는 게 옳은 방법일까요? 그리고 굳이 forceRefetch를 통해서만 주문탭이 업데이트되게 하신 이유가 있을까요?
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
캘린더 스케쥴러 Today Banner설계 질문있습니다
안녕하세요. 플러터 강의 잘 보고 있습니다.Today Banner설계 강의 마지막부분에 home_screen으로 onDaySelected함수를 뺐는데home_screen에서 이 함수를 정의를 하고~chileren[Calendar(selectedDay: selectedDay,focusedDay: focusedDay,onDaySelected : onDaySelected,),~위처럼 Calendar안에 onDaySelected를 파라미터로 넣었는데요, 이 함수가 실행되는 시점은 calendar.dart파일 안에서TableCalendar를 리턴할때, onDaySelected : onDaySelected 이 부분에 의해 실행이 되는데제가 이해하고 있는거로는home_screen.dart가 stateful위젯이니까 그 안에Calendar(selectedDay: selectedDay,focusedDay: focusedDay,onDaySelected : onDaySelected,),가 실행 되면 home_screen.dart안에 build함수가 다시 불려서 그림을 다시 그리는거로 이해하고 있습니다.(캘린더 날짜를 클릭하는대로 날짜가 바뀌는)근데 home_screen에서 onDaySelected함수를 정의해서 Calendar() 안에 넣는데 어떻게 _HomeScreenState에 정의한 selectedDay의 값을 받아와서 그 밑에 TodayBanner안에 selectedDay매개변수에 넣어줄 수 있는지 이해가 안됩니다.요약하자면home_screen에 onDaySelected를 정의했고 Calendar()에 정의한 onDaySelected를 넣어서 Calendar내부에서 실행을 한건데 그럼 onDaySelected함수에 정의한 this.selectedDay = selectedDay; 이 부분은 calendar.dart에 있는 selectedDay에 들어가야하는거 아닌지, 어떻게 home_screen의 selectedDay에 값이 들어가게 되는지 알고싶습니다. 답변 부탁드리겠습니다.
-
해결됨Flutter 앱 개발 기초
Bucket Provider 대신에 Riverpod 로 변경해보고 싶어요.
안녕하세요. 3강 강의를 듣고 질문드립니다.상태관리는 Riverpod 로 변경해보고 싶은데 잘 안됩니다./// 버킷 클래스 class Bucket { String job; // 할 일 bool isDone; // 완료 여부 Bucket(this.job, this.isDone); // 생성자 }Provider 의 BucketServiceclass BucketService extends ChangeNotifier { List<Bucket> bucketList = [ //Bucket('잠자기', false), // 더미데이터 ]; /// bucket 추가 void createBucket(String job){ bucketList.add(Bucket(job, false)); notifyListeners(); } /// bucket 수정 void updateBucket(Bucket bucket, int index){ bucketList[index] = bucket; notifyListeners(); } /// bucket 삭제 void deleteBucket(int index){ bucketList.removeAt(index); notifyListeners(); } }이걸 Riverpod v2 기준으로 변경해보고 싶은데 매개변수를 그대로 사용하면서 할 수 있는 방법을 모르겠습니다.final bucketProvider = NotifierProvider<BucketNotifier, List<Bucket>>(BucketNotifier.new); class BucketNotifier extends Notifier<List<Bucket>> { @override List<Bucket> build() => []; /// bucket 추가 void createBucket(String job){ state = [...state, Bucket(job, false)]; } /// bucket 수정 void updateBucket(Bucket bucket, int index){ } /// bucket 삭제 void deleteBucket(int index){ //state = state.where((element) => element != index).toList(); // element 에는 index 가 없는데 어떻게 비교할 수 있을까? } }
-
해결됨Flutter로 SNS 앱 만들기
firebase 관련오류
안녕하세요..사용자 인증 시 아래와 같은예외가 발생합니다. FirebaseAuthException ([firebase_auth/too-many-requests] We have blocked all requests from this device due to unusual activity. Try again later.) 여기저기 찾아봐도 이유를 모르겠습니다혹시, 이유를 아시면 답변 부탁드리겠습니다. 감사합니다.