묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
redirect 조건설정 ?
bool authState = false; final router = GoRouter( initialLocation: '/', errorBuilder: (context, state) { return ErrorScreen( error: state.error.toString(), ); }, redirect: (context, state) { print('MatchedLocation: ${state.matchedLocation}'); print('AuthState: $authState'); if (state.matchedLocation == '/login/private' && !authState) { return '/login'; } return null; },안녕하세요, 리다이렉트시 조건 설정로직이 이해가 잘 되지 않습니다. 초기 authState의 값은 'false'입니다.state.matchedLocation == '/login/private' && !authState 이부분에서 첫번째 조건은(state.matchedLocation == '/login/private') 'true', 두번째도 '!autoState'이므로 ' true'입니다. 그래서 모든 조건이 true가 되어서 로그인이 이루어져서 privateScreen으로 이동해야 될 것 같은데...잘 이해가 되지 않는 로직이라서 질문드립니다. 이렇게 쓰는게 좋을 것 같으나 .... if (state.matchedLocation == '/login/private' && !authState) { return '/login/private'; } return '/login'; } 라우터에서는 이렇게 써야 할 것 같은데요.... if (state.matchedLocation == '/login/private' && authState) { return '/login'; } return null; } 상기와 같이 쓰면 state.matchedLocation == '/login/private' && authState 은 당연한 참이기에 의미없는 조건문이 됩니다. 여하튼 잘 이해되지 않는 부분입니다.
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
미세먼지앱 질문있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.코드팩토리 디스코드https://bit.ly/3HzRzUMFlutter 강의를 구매하시면 코드팩토리 디스코드 서버 플러터 프리미엄 채널에 들어오실 수 있습니다! 디스코드 서버에 들어오시고 저에게 메세지로 강의를 구매하신 이메일을 보내주시면 프리미엄 채널에 등록해드려요! 프리미엄 채널에 들어오시면 모든 질의응답 최우선으로 답변해드립니다! 안녕하세요 현재 스타일링 마무리하기 << 여기 듣고 있습니다. 옆에 지역선택하기 누르면 안바뀐다고 나와있는데 그게 보니깐 제 코드에선 지역이 서울로 설정 돼있더라구요 그래서 어떤 지역을 넣든간에 서울로 고정돼있는 거 같은데 제가 실수로 빼먹었나해서 문의드렸습니다. 다른 지역 누르면 종류별 통계에 미세먼지가 양호가 아님에도 양호라고 뜨네요 앱바에 보이는 색과 아이콘은 서울 고정이고 지역이름은 바뀌는 것 같습니다.다른 지역 누르면 종류별 통계에 미세먼지가 양호가 아님에도 양호라고 뜨네요
-
해결됨[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
dio, retrofit, json_serializable의 관계
여러가지 패키지를 결합해서 사용하다보니 헷갈리는 과정이 있어서 질문드립니다. 제가 이해한 바로는 아래와 같은데 맞는지 확인부탁드립니다.. 패키지 정의: Dio는 Http통신을 간소화하며, 인터셉트를 통해 오류처리나 요청, 응답을 받을 때 무언가 작업을 할 수 있게 도와준다.Retrofit은 Dio를 통해 요청을 보내기 전 헤더 추가도 가능하고, GET method로 응답을 받은 후에 json_serializable을 활용해서 json데이터를 만들어둔 클래스에 매핑할 수 있도록 돕는다.패키지 활용:Retrofit으로 매핑가능하도록 RestaurantModel 클래스 등에 미리 factory생성자로 json_serializable .g.dart파일을 만들어둔 뒤 Dio로 서버응답을 받고 Retrofit을 통해 클래스로 매핑해서 메모리에 저장한다 까지가 지금까지 했던 과정인지요??
-
해결됨Flutter 앱 개발 기초
await Firebase.initializeApp() 에서 안넘어갑니다 ㅠ
디버그 콘솔 문구는 아래와 같습니다.E/flutter ( 8209): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: PlatformException(null-error, Host platform returned null value for non-null return value., null, null)커뮤니티에 비슷한 오류 해결 방법 제시해주신거 보고 그것도 해봤는데 안되네요;계속 여기 막혀있습니다ㅠ_ㅠ 아래 제가 설정한 부분 이미지 첨부합니다.확인부탁드립니다.
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
Error (Xcode): Sandbox: rsync(13885) deny(1)
안녕하세요 아이폰 15 ios17 xcode15로 업그레이드 하고 나서부터 위와같은 오류로 빌드가 안되는데 혹시 이 이슈 알고 계실까요?
-
해결됨[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
401 오류입니다.
현재 dio.dart의 onResponse 까지 작업을 했습니다. 그런데, I/flutter (11405): [REQ] [GET] http://10.0.2.2:3000/restaurant/5ac83bfb-f2b5-55f4-be3c-564be3f01a5bI/flutter (11405): [ERROR] [GET] http://10.0.2.2:3000/restaurant/5ac83bfb-f2b5-55f4-be3c-564be3f01a5b이렇게 뜨고 계속 401 에러가 납니다. 혹시나 로그인 문제인가 싶어 계속 postman에서 새로고침도 해봤는데 되지 않았습니다. (그러나 이미 해당 코드는 그럴 필요가 없는 단계) print되는 url을 주소창에 입력하니, 페이지가 나오지 않더라고요, 혹시 http://10.0.2.2:3000/ <-- 이 주소와 연관이 된 문제가 아닌가 싶은데, 어떻게 해결해야 할까요?
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
TodayBanner설계 7분경에 onDaySelected함수
안녕하세요코딩 기초가 없어서 너무 이상한 질문을 하는건 아닌지 죄송합니다만TodayBanner 설계 7분경에 onDaySelected를 밖으로 빼는 이유가 있을까요?원래 위치에 그대로 두고 this.widget.selectedDay= selectedDay; 이런식으로 코드 작성 하면 안되는 건지 궁금합니다.
-
해결됨Flutter 중급 3편 - 의존성 주입 가이드
go router 의존성
안녕하세요강의 잘 보고 있습니다. go router 와 dio 를 이용해서 프로젝트를 진행하고 있는데요,dio 에서 interceptor 를 사용해 토큰을 보내고 응답코드에 따라 상태를 보내고 있습니다. 그러나 dio 를 통해 403 코드가 발생했을 시 이전 화면으로 보내거나 로그인 페이지로 보내하는 경우 부득이하게 dio에서 (interceptor) context 를 사용하게 됩니다. 이런 경우 view 에서 부터 view model 을 통해 remote 까지 context를 가져가야하는데 테스트를 어렵게하는 요인이라고 생각이 됩니다. 바람직하게 redirection 을 처리하려면 어떻게 해야 되는지 궁금합니다.감사합니다.
-
미해결Flutter 초입문 왕초보편
에뮬레이터 실행 안됨
저는 계속 에뮬레이터 실행안되서 찾아보다가 CPU 기능에서 인텔 가상화 기술이 지원되는지 확인해야한다는 내용도 있길래 찾아봤는데, 이렇게 인텔 가상화 기술에 ' x '가 되있으면 PC 자체가 성능부족으로 에큘레이터 미작동을 해결할 방법이 아예 없는건가요? <CPU 성능확인><에뮬레이터 오류 화면>
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
지도가 안보이고 있어요...
(사진)
-
미해결Flutter 초입문 왕초보편
006 강의, 에뮬레이터 실행안됨
안녕하세요. 강의 내용을 따라 제대로 진행한것같은데, 자꾸 아래와 같이 메세지가 뜨면서 에뮬레이터 작동이 안됩니다. 어떻게 하면 될까요?
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
jwt.io에서 토큰 확인 시
{ "refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InRlc3RAY29kZWZhY3RvcnkuYWkiLCJzdWIiOiJmNTViMzJkMi00ZDY4LTRjMWUtYTNjYS1kYTlkN2QwZDkyZTUiLCJ0eXBlIjoicmVmcmVzaCIsImlhdCI6MTY5Nzk3NDAzNSwiZXhwIjoxNjk4MDYwNDM1fQ.hQMG5C5jegj0zMHIyJBaLGoxIDeRLkw9CCkuTofG3QU", "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InRlc3RAY29kZWZhY3RvcnkuYWkiLCJzdWIiOiJmNTViMzJkMi00ZDY4LTRjMWUtYTNjYS1kYTlkN2QwZDkyZTUiLCJ0eXBlIjoiYWNjZXNzIiwiaWF0IjoxNjk3OTc0MDM1LCJleHAiOjE2OTc5NzQzMzV9.NuRi9YyLy0vwi4yy5pkC52-6tBq8ZnyzQwHKgkv2D6E" } jwt.io에 위 코드를 붙여넣기 하면 Invalid Signature 상태고,이때 Verify Signature에 codefactory를 입력해야 한다고 하였는데요.c만 입력해도 Signature Verified로 나오네요.심지어 아무 글자나 입력해도 그래요.왜 그런걸까요?제가 뭔가 잘못했을 것 같긴 한데요..
-
미해결Flutter 초입문 왕초보편
000강 뒤에 있는 소스코드 어떻게 받는거죠?
000강 뒤에 있는 소스코드 깃허브에서 어떻게 받는거죠 깃허브에서 exe형태나 zip 형태는 받아 봤는데 이런형태는 첨이라 그런데 모르겠습니다.
-
해결됨[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
토큰이 탈취되는 시점은 언제인가요?
질문들 몇 가지 살펴보았는데 제가 이해한 바로는서버와 토큰으로 통신할 때 탈취가 진행되기 때문에 리프레쉬 토큰은 사용빈도가 적어 탈취위험이 적고 엑세스 토큰은 빈도수가 높아 탈취위험이 높기 때문에 유효기간을 짧게 한다인데여기서 궁금한 점은 토큰이 어느 시점에서 탈취되는지입니다.서버와 토큰으로 상호작용할 때 패킷을 빼와서 탈취하는 건가요?
-
해결됨Flutter 앱 개발 기초
앱을 다운로드한 기기 OS에 맞는 스타일로 보여주는 방법
안녕하세요!만약 하나의 앱을 안드로이드 기기에서 다운받았을 때는 안드로이드 스타일로 보여주고 iOS 기기에서 다운받았을 때는 iOS 스타일로 보여주고 싶은 경우 모든 UI를 Material Widget과 Cupertino Widget 양벌로 구현해야 하나요?
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
질문이 있습니다.
선생님의 flutter-lv2-server-main 파일은,만약 앱하나를 직접 만드는 개발자라면 이 파일도 직접 만들 줄 알아야 할까요?만든다면 어떻게 만들면 될까요?이것에 관한 수업은 없을까요?만약 이것에 관한 수업을 듣는다면, 어떤 영상을 찾아서 봐야할까요?직접 앱을 만들어서 공식 론칭을 하려고 할때, 이런 서버파일도 필요할텐데, 현재 이 수업에서는 그냥 선생님의 파일을 다운받아 스웨거 화면으로 넘어가고 있습니다. 이런 모든 과정에 대해 배우고 싶습니다.
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
맥북 OS 업그레이드 이후 기존 진행하던 프로젝트 빌드가 되지 않음
xcode도 업데이트가 됐습니다시뮬레이터도 재설치 하고 하더라고요그런데 device가 iphone 15 만 나오와서 일단 그거 선택하고 빌드를 했는데 아래와 같은 에러가 뜨네요Uncategorized (Xcode): Command CodeSign failed with a nonzero exit codeCould not build the application for the simulator.Error launching application on iPhone 15. flutter cleanflutter pub get도 해보고 다시 실행해도 마찬가지 입니다
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
update를 만들던 도중 +버튼이 먹통이 되었습니다
강의를 보면서 따라가던 도중 영상12:00에서 print를 하던도중에 알게되었는데 +버튼을 눌러도 schedule_bottom_sheet가 올라오지 않았습니다. 혹시 그 이후 강의를 따라가다보면 오류가 해결될까 싶어서 이어서 더 해봤지만 update는 문제없이 되지만 여전히 +버튼이 먹통이라서 도저히 어디서 생긴 문제인지 모르겠습니다. 혹시나 싶어서 github의 코드도 봤지만 오타도 아닌 것 같아서 더욱 어디가 문제인지 모르겠습니다.
-
미해결Flutter 초입문 왕초보편
이런 에러가 뜨는데 어떻게 해결할 수 있을까요? (unable to find valid certification path to requested target)
유튜브를 찾아봐도 영어 설명에, Java 에 대한 기본 지식이 어느 정도 있어야 뭔가를 할 수 있을 것 같습니다. 회사 PC라 뭔가 회사 보안프로그램 때문인지.... 뭔지 알수가 없네요. 집 PC 에서는 뭐가 'Terminated'라 되어 안되고, Android studio 에러 때문에 Flutter 라는 놈을 과연 배워야 할지 초기 부터 절망적이네요ㅠㅠ Launching lib\main.dart on AOSP on IA Emulator in debug mode...Running Gradle task 'assembleDebug'...Exception in thread "main" javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targetat java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131)at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:371)at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:314)at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:309)at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:654)at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.onCertificate(CertificateMessage.java:473)at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.consume(CertificateMessage.java:369)at java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:396)at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:480)at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:458)at java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:201)at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:172)at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1510)at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1425)at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:455)at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:426)at java.base/sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:580)at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:187)at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1665)at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1589)at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:224)at org.gradle.wrapper.Download.downloadInternal(Download.java:58)at org.gradle.wrapper.Download.download(Download.java:44)at org.gradle.wrapper.Install$1.call(Install.java:61)at org.gradle.wrapper.Install$1.call(Install.java:48)at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:65)at org.gradle.wrapper.Install.createDist(Install.java:48)at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:128)at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targetat java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:439)at java.base/sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:306)at java.base/sun.security.validator.Validator.validate(Validator.java:264)at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:231)at java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:132)at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:638)... 24 moreCaused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targetat java.base/sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)at java.base/sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)at java.base/java.security.cert.CertPathBuilder.build(CertPathBuilder.java:297)at java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:434)... 29 moreException: Gradle task assembleDebug failed with exit code 1
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
비동기 프로그래밍 강의19분대 질문
Addnumbers 함수의 타입이 void이든 future<void>이든 둘 다 논리적인 오류없이 가능한건가요? 그냥 둘의 차이점은 addnumbers함수를 main함수 안에서 await할 수 있고, 없고 밖에 없는건가요?