inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

CatService 를 수정해보고 싶은데 잘 안되어 도움 요청드립니다.

해결됨

Flutter 앱 개발 기초

안녕하세요. 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
Link 댓글 1 좋아요 1 조회수 224

main 함수에서 async/await를 사용하는 이유가 궁금합니다

미해결

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

main 함수에서 async/await가 없더라고 순차적으로 아래처럼 수행이될거같은데 async/await가 필요한 이유가 무엇인지 궁금합니다 WidgetsFlutterBinding.ensureInitialized(); initializeDateFormatting(); runApp

  • flutter
  • 클론코딩
당근농부 댓글 1 좋아요 0 조회수 345

iPhone simulator의 아래와 같은 오류

미해결

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

[ERROR:flutter/shell/platform/darwin/graphics/ FlutterDarwinContextMetalImpeller.mm (42)] Using the Impeller rendering backend. 코팩님. 실행은 정상적으로 되지만 위와 같은 오류가 있는데 인터넷 검색해 보니 프로그램에서 바꾸면 된다고 나오는데, 근본적인 해결책은 없을까요? 셋팅 등에서..

  • flutter
  • 클론코딩
SY. Jeoung 댓글 1 좋아요 0 조회수 1401

orderProvider 관련 질문이 있습니다.

미해결

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

선생님 안녕하세요. 완강 후 코드 뜯어보면서 복습 중입니다:) 주문 탭 클릭 시 곧바로 주문한 최신 리스트를 볼 수 있게하는 방법을 고민하다가 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
  • 하이브리드-앱
Hyunsang-Coder 댓글 1 좋아요 0 조회수 174

캘린더 스케쥴러 Today Banner설계 질문있습니다

미해결

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

안녕하세요. 플러터 강의 잘 보고 있습니다. 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
  • 클론코딩
khs50851 댓글 1 좋아요 0 조회수 355

IIS 500.19에러

미해결

남박사의 파이썬으로 실전 웹사이트 만들기

구글로 먼저 배포 해보고 잘 되서 IIS로 배포해보려고 하는데 다음과 같이 나옵니다 handler도 Allow로 바꿨고 web.config는 그대로 복사하고 경로도 확인했는데 뭐가 문제일까요...ㅠㅜㅠ

  • python
Eddie 댓글 2 좋아요 0 조회수 675

Bucket Provider 대신에 Riverpod 로 변경해보고 싶어요.

해결됨

Flutter 앱 개발 기초

안녕하세요. 3강 강의를 듣고 질문드립니다. 상태관리는 Riverpod 로 변경해보고 싶은데 잘 안됩니다. /// 버킷 클래스 class Bucket { String job; // 할 일 bool isDone; // 완료 여부 Bucket(this.job, this.isDone); // 생성자 } Provider 의 BucketService class 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
Link 댓글 1 좋아요 1 조회수 238

vitest를 설치했는데 이 작업 영역에서 아직 발견된 테스트가 없습니다.라는 문구가 떠서 테스트를 진행할 수 없습니다..

미해결

실무에 바로 적용하는 프런트엔드 테스트 - 1부. 테스트 기초: 단위・통합 테스트

안녕하세요. 2.1 단위 테스트란 무엇일까? 강의를 들으며 따라하고 있습니다. 강의에서 진행하고 있는 unit-test-example 브랜치에서 TextField.spec.jsx 파일을 따라 치며 테스트를 하려고 하는데 vscode 테스트 메뉴에서 '이 작업 영역에서 아직 발견된 테스트가 없습니다.' 라는 문구와 '추가 테스트 확장 설치'라는 버튼만 떠서 테스트 진행을 하지 못하고 있습니다. 강의에서 소개해주신 vitest를 설치하고 vscode를 껐다가 다시 켜봐도 테스트를 찾을 수 없다고 뜨고 있는데 제가 어떻게 하면 될까요?

  • javascript
  • react
  • 소프트웨어-테스트
  • vitest
ori ga 댓글 4 좋아요 2 조회수 1594

firebase 관련오류

해결됨

Flutter로 SNS 앱 만들기

안녕하세요.. 사용자 인증 시 아래와 같은 예외가 발생합니다. FirebaseAuthException ([firebase_auth/too-many-requests] We have blocked all requests from this device due to unusual activity. Try again later.) 여기저기 찾아봐도 이유를 모르겠습니다 혹시, 이유를 아시면 답변 부탁드리겠습니다. 감사합니다.

  • flutter
  • android
  • firebase
  • dart
이주한 댓글 1 좋아요 0 조회수 673

StreamBuilder 관련 질문입니다.

미해결

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

강의 중에 snapshot.data 를 콘솔에 찍는 부분에 관한건데요! hot reload시 케바케로 - flutter: null flutter: Latitude: 37.522327, Longitude: 126.921252 flutter: Latitude: 37.522327, Longitude: 126.921252 - 와 같이 현재 포지션이 두번 찍힐때가 있는데 이런건 어떤거때문인걸까요? 제가 생각하기로는 앱 로딩 시 빌드 함수가 실행되면서 getPositionStream()이 실행되나, 위치 잡아오기 전이라 null 반환 이후 위치 잡아오면 스트림에 입력되어 위/경도값 반환 이게 끝인거같은데 종종 보면 저 위/경도값이 두번 찍힐때가 있더라구요..! 이유가 궁금합니다.

  • flutter
  • 클론코딩
DJB 댓글 1 좋아요 0 조회수 225

구글맵 Using the Impeller rendering backend. 에러 뜨시는 분들!

미해결

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

Impeller라는 렌더링 백엔드가 현 앱과 호환되지 않는 경우에 발생할 수 있는 문제라고 합니다. info.plist에 <key>FLTEnableImpeller</key> <false/> 추가해주시면 해결됩니다~

  • flutter
  • 클론코딩
DJB 댓글 1 좋아요 0 조회수 1085

Product게시판 이미지에 대해서

미해결

코드로 배우는 React 19 with 스프링부트 API서버

토큰적용 후 발생하는 현상에 대해서 질문드립니다. Product게시판에 이미지에 경우, 아래와 같이 표시가되는데요 이때 토큰을 헤더에 설정 되어있지않기떄문에 {"error":"ERROR_ACCESS_TOKEN"}가 발생합니다. jwtAxios를 사용하여 처리는 가능할듯한데 문제는 결과값이 문자열로 되돌아와서 이미지표시가 좀 힘들어보이고 어떻게 처리해야할지 모르겠습니다. 이런경우 어떠한방식으로 처리하는게 좋을까요? src={`${host}/api/products/view/s_${product.uploadedFileNames[0]}`}

  • react
  • spring-boot
  • jpa
  • jwt
  • redux-toolkit
ultimates 댓글 2 좋아요 0 조회수 382

NotifierProvider 로 변경하고 싶어요

해결됨

Flutter 앱 개발 실전

안녕하세요. Riverpod 상태관리에서 StateNotiferProvider 대신에 NotifierProvider를 사용하는 것을 권장하신다고 하셨는데요. StateNotifierProvider 로 작성한 코드를 NotiferProvider 로 변경하고 싶은데 잘 안되어 문의 드립니다. contactStateProvier 코드로는 정상 동작됩니다. 이 코드를 NotifierProvider 로 변경해보려고 하는데 잘 안되네요. final contactStateProvider = StateNotifierProvider<ContactStateNotifier, ContactResultBase>( (ref) { final repository = ref.watch(restClientProvider); final notifier = ContactStateNotifier(restClient: repository); return notifier; }, ); class ContactStateNotifier extends StateNotifier<ContactResultBase> { final RestClient restClient; ContactStateNotifier({required this.restClient}) : super(ContactResultLoading()) { postContactList(); } postContactList() async { final resp = await restClient.postContactList( Crypto.AES_encrypt(Crypto.URLkey()), ''); state = resp; } } @RestApi(baseUrl: RetrofitURL.baseUrl) abstract class RestClient { factory RestClient(Dio dio, {String baseUrl}) = _RestClient; @POST(RetrofitURL.mLogin) @FormUrlEncoded() Future<LoginResponse> userLogin( @Field() String keyword, @Field() String userID, @Field() String password, @Field() String uID, @Field() String mfoneNO, ); @POST(RetrofitURL.contactData) @FormUrlEncoded() Future<ContactResult> postContactList( @Field() String keyword, @Field() String search, ); } final secureStorageProvider = Provider<FlutterSecureStorage>((ref) => const FlutterSecureStorage()); final dioProvider = Provider<Dio>((ref) { final dio = Dio(); final storage = ref.watch(secureStorageProvider); dio.interceptors.add(LogInterceptor()); dio.interceptors.add( CustLogInterceptor(storage: storage,), ); return dio; }); final restClientProvider = Provider<RestClient>((ref) { final dio = ref.watch(dioProvider); final repository = RestClient(dio); return repository; }); contactStateProvider 를 변경시도 해보다가 에러가 발생한 코드 final contactProvider = NotifierProvider<ContactNotifier, ContactResultBase>( () { final repository = ref.watch(restClientProvider); final notifier = ContactNotifier(restClient: repository); return notifier; }, ); class ContactNotifier extends Notifier<ContactResultBase> { @override ContactResultBase build() => ContactResultLoading(); final RestClient restClient; ContactStateNotifier({required this.restClient}) { postContactList(); } postContactList() async { final resp = await restClient.postContactList( Crypto.AES_encrypt(Crypto.URLkey()), ''); state = resp; } }

  • flutter
Link 댓글 1 좋아요 0 조회수 386

맥북에서 에뮬, 시뮬레이터 오류들

미해결

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

안녕하세요, 수업 잘 듣고 있습니다. 다름이 아니라 이번에는 제가 근무지 이동때문에 데스크탑(윈도우)이 아닌 맥북(m1)으로 코딩을 공부하는 중입니다. 현재 가장 최신인 giraffe버전인데, 맥북에서 시뮬레이터로 코딩하면 크롬에서 스웨거도 잘 뜨고, 자동로그인도 잘되어 splashscreen페이지에서 바로 rootTab으로 넘어갑니다. 그런데 그 외의 서버에서 보내오는 이미지나 텍스트 데이터들이 전혀 뜨지 않아 무한 로딩을 합니다ㅠ 그래서 에뮬레이터를 돌려보려고 하니 파일 경로중에 알맞지 않은 문자가 있다는데, 아무리 봐도 '_'(아래바) 제외하고는 전혀 특수문자나 공백은 없습니다.. 에뮬도 안켜지고, 시뮬레이션에 데이터도 안떠서 답답하네요; 도움 구할 곳이 없어 도움 구해봅니다 ㅠ 올 한해도 고생 많으셨고, 해피 크리스마스 입니다^^

  • flutter
  • 하이브리드-앱
김지현 댓글 2 좋아요 0 조회수 549

GoRouter Redirection관련 질문이 있습니다..

미해결

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

안녕하세요? 강사님, 중급강의 섹션 13. [Go Router v7] GoRouter 이론 중 "Redirection" 파트에 관련된 질문인데요. 9_login_screen.dart 파일(LoginScreen 클래스)에 코딩된 "authState"는 router.dart파일에 코딩된 "authState"와 어떤 관계(?)인지를 모르겠습니다. 무슨말인가 하면 authState 변수는 LoginScreen 클래스내에서 별도로 선언을 해주지도 않았는데도 setStat를 이용해서 값을 ture, false로 바꿀 수 있는 것도 이상하고, 이렇게 LoginScreen 클래스에서 변경된 authState값이 router.dart파일에서 인식(?)이 되는것도 이상합니다. 제 질문이 조금 무식해 보이긴 한데... 제 질문 의도는 파악하셨으리라 생각되어서 답변 좀 부탁드리겠습니다...

  • flutter
  • 하이브리드-앱
임명훈 댓글 1 좋아요 1 조회수 268

강의자료 부탁 드립니다~

미해결

프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)

안녕하세요, 강의자료 부탁 드려도 될까요? fbyksong@gmail.com 입니다.

  • python
댓글 1 좋아요 0 조회수 265

오류 메세지

미해결

실전 프로젝트로 배우는 데이터 앱 만들기 with Python & Streamlit

안녕하세요~~ 루비네 코딩 입니다 ^^ 최근 앱을 런칭할 때 다음과 같은 오류가 발생하고 있습니다. ModuleNotFoundError: No module named 'altair.vegalite.v4' 이런경우, 다음과 같이 altair 패키지의 버전을 바꾸어 설치해 주세요 ^^ 감사합니다~ pip uninstall altair pip install altair==4.2.2

  • python
  • streamlit
루비네 코딩 댓글 2 좋아요 1 조회수 920

구글맵 지도 자체는 뜨는데 위치가 안뜨시는분들

미해결

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

API 및 서비스 여기서 Maps SDK for Android랑 iOS 여기서 DISABLE로 되어있어야 활성화 된겁니다! 처음에 ENABLE로 되어야 활성화인줄알고 했다가 계속 안떴었네요! 강사님 이거 자막에 달아주시면 좋을거같습니다 ㅜㅜ

  • flutter
  • 클론코딩
khs50851 댓글 4 좋아요 2 조회수 658

GeneratedMocks로 생성한 코드의 위치를 변경하고싶어요

미해결

Flutter 테스트 기초

GeneratedMocks로 생성한 코드들이 많아지면 복잡할 것 같아서 생성되는 파일의 위치를 자동으로 변경해주고 싶은데요, 예를들면 현재 코드가 있는 디렉토리에 generated라는 디렉토리 안에다가 생성된 파일을 저장해주고싶어요. 어떠한 설정을 해야할까요?

  • flutter
  • 소프트웨어-테스트
  • ui-testing
  • integration-tests
김창호 댓글 1 좋아요 0 조회수 249

react 모바일 삼성인터넷으로 사이트 접속시 크롬 연결 팝업

미해결

안녕하세요 react로 웹 페이지를 만들었는데 만든 사이트를 모바일로 삼성인터넷 앱을 통해 접속하니깐 크롬 연결 팝업이 자동으로 계속 나오게 되더라구요 혹시 코드상으로 크롬 연결 팝업이 뜨는걸 막을수있는 방법이 있을까요 ?

  • react
김경태 댓글 1 좋아요 0 조회수 423

인기 태그

인프런 TOP Writers

주간 인기글