[Bloc 응용] 실전 앱 만들기 (책 리뷰 앱) : SNS 로그인, Firebase 적용, Bloc 상태 관리, GoRouter
안녕하세요 개남님 개남님이 만들어주신 코드와 제가 가지고 있던 코드랑 같이 활용을 해보려고 했는데 기존에 있던 코드가 작동을 안 하는데 혹시. 개남님이 만드신 Authrepository를 사용안하면 기존에 있던 name이나 Uid를 인식을 못 해서 안 불러지는건가요? --추가-- 신기한건 [VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: Bad state: cannot get a field on a DocumentSnapshotPlatform which does not exist 이런식으로 에러가 뜨네요... 흠.. 분명 name은 존재한다고 뜨긴하는데.. (개남님이 만드신 방식으로 해야만 뜹니다) (추가) 이런식으로 해봤더니 기존의 구글 name이 뜨네요. 음 Authrepository의 cubit에서 인식하는 name은 우리가 회원가입에서 입력한 이름이고 제가 만든 코드에서 인식하는 name은 구글 기존의 이름으로 뜹니다. 이유가 뭘까요? 감사합니다! void _nameEvent(NameEvent event, Emitter<HomePageState> emitter) async { String uid = FirebaseAuth.instance.currentUser!.uid; DocumentSnapshot document = await FirebaseFirestore.instance.collection('users').doc(uid).get(); String userName = document['name']; int level = document['level']; //여기는 기존의 bloc입니다 //이 아래는 이렇게하니까 우리가 추가한 네임이 아니라 기존의 구글 네임이 뜨게 되는 코드입니다. void _nameEvent(NameEvent event, Emitter<HomePageState> emitter) async { UserModel? userModel; final user = await _authenticationRepository.user.first; final userName = user?.name ?? 'Unknown'; // 기본값 설정 print("유저의 이름은 $user"); print("유저의 이름은 $userName"); emit(state.copyWith( name: userName, )); // 기존의 Firestore에서 사용자 정보를 가져오는 코드... String uid = FirebaseAuth.instance.currentUser!.uid; DocumentSnapshot document = await FirebaseFirestore.instance.collection('users').doc(uid).get(); int level = document['level']; print(user); print(userName); emitter(state.copyWith( level: level, name: userName, )); }
이번에 처음으로 앱 개발 공부를 해보려고 react native를 열심히 실행해 봤습니다. 중간에 계속 에러가 나고 막히는 부분이 있었지만 겨우 마지막에 npm run android부분까지 왔습니다. 그런데 실행을 할려고 하면 계속 C:\Users\aladi\MyApp\NewApp>npx react-native run-android info Starting JS server... info 💡 Tip: Make sure that you have set up your development environment correctly, by running react-native doctor. To read more about doctor command visit: https://github.com/react-native-community/cli/blob/main/packages/cli-doctor/README.md#doctor FAILURE: Build completed with 2 failures. 1: Task failed with an exception. ----------- * Where: Build file 'C:\Users\aladi\MyApp\NewApp\android\app\build.gradle' line: 2 * What went wrong: A problem occurred evaluating project ':app'. > Could not find implementation class 'com.facebook.react.ReactPlugin' for plugin 'com.facebook.react' specified in jar:file:/C:/Users/aladi/.gradle/caches/jars-9/e787d8a8f912d81d210d8e27e6fa5ed3/react-native-gradle-plugin.jar!/META-INF/gradle-plugins/com.facebook.react.properties. * 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. ============================================================================== 2: Task failed with an exception. ----------- * What went wrong: A problem occurred configuring project ':app'. > compileSdkVersion is not specified. Please add it to build.gradle * 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. ============================================================================== * Get more help at https://help.gradle.org BUILD FAILED in 12s error Failed to install the app. Command failed with exit code 1: gradlew.bat tasks FAILURE: Build completed with 2 failures. 1: Task failed with an exception. ----------- * Where: Build file 'C:\Users\aladi\MyApp\NewApp\android\app\build.gradle' line: 2 * What went wrong: A problem occurred evaluating project ':app'. > Could not find implementation class 'com.facebook.react.ReactPlugin' for plugin 'com.facebook.react' specified in jar:file:/C:/Users/aladi/.gradle/caches/jars-9/e787d8a8f912d81d210d8e27e6fa5ed3/react-native-gradle-plugin.jar!/META-INF/gradle-plugins/com.facebook.react.properties. * 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. ============================================================================== 2: Task failed with an exception. ----------- * What went wrong: A problem occurred configuring project ':app'. > compileSdkVersion is not specified. Please add it to build.gradle * 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. ============================================================================== * Get more help at https://help.gradle.org BUILD FAILED in 12s > Task :gradle-plugin:compileKotlin UP-TO-DATE > Task :gradle-plugin:compileJava NO-SOURCE > Task :gradle-plugin:pluginDescriptors UP-TO-DATE > Task :gradle-plugin:processResources UP-TO-DATE > Task :gradle-plugin:classes UP-TO-DATE > Task :gradle-plugin:jar UP-TO-DATE > Task :gradle-plugin:inspectClassesForKotlinIC UP-TO-DATE 5 actionable tasks: 5 up-to-date. 이런 에러가 뜨더라구요 정말 이쪽부분은 하나도 모르는 코린이라 아무리 구글링해보고 혼자 머리 굴려봐도 해결이 되지 않습니다.. 에뮬레이터까지는 뜨는데 react native화면은 뜨지 않고 저렇게 에러 메세지만 나옵니다. 어떻게 해야될까요.. 제발 도와주세요ㅜ
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
vscode로 플러터 디버깅을 할 때 오류가 나면 오류가 발생한 지점을 표시하면서 디버깅이 일시중지되고 거기서 f5(계속)을 계속 눌러서 문제되는 지점을 다 확인해야만 디버깅이 재개되는데요, 이게 너무 불편합니다.. 강의에서보면 안드로이드스튜디오는 그냥 오류메시지만 알려주고 디버깅이 일시정지되거나 그러지 않아서 오히려 디버깅이 편해보이는데, 혹시 선생님께서는 vscode에서도 안드로이드스튜디오식으로 디버깅을 할 수 있게 하는 방법을 아시나요..? 나름대로 찾아보려고 하는데 검색어부터 애매해서 쉽지않네요 ㅠㅠ 그냥 안드로이드스튜디오로 갈아타야할까요..
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
안녕하세요 강사님 현재 초급강의를 진행하면서 중급강의를 결제를 해서 보고있는데요 초급강의 내용들 대부분이 UI쪽 위주인거 같아서 혹시 빠르게 공부를 진행하려면 초급 강의를 건너 뛰거나 중급강의와 동시에 진행하는 방법도 괜찮은지 여쭈어보려고 합니다. (회사에서 급하게 프로젝트를 진행해야 되서 그렇습니다.)
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
캘린더 만들기 강의를 따라하는 중에 eventLoader 기능도 넣어보고 싶은데 알려주신 db에서 이벤트를 불러와 events map에 넣고 eventloader에서 리스트로 불러오면 되는 것 같은데요. 제가 구현해 봤을 땐 이벤트 추가를 하고 꼭 화면을 한번 터치해야 marker가 표시되고 이벤트를 삭제해도 앱을 재실행하지않으면 marker가 사라지지 않더라고요. 해결방법을 찾지 못해 질문드립니다.
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 코드팩토리 디스코드 https://bit.ly/3HzRzUM 캘린더 요일부분에 잘림이있는데, 어떻게 해결해야할까요? 코드는 색깔만 빼고 강의와 동일한데 라이브러리 자체의 문제인지 뭔지 모르겠네요ㅜㅜ
provider 강의를 듣기 시작했는데 flutter pub add provider을 했을 때 이런 메시지가 떠서 구글링 해보니 zsh에서 플러터 경로를 몰라서 생기는 문제라고 하더라구요. 그래서 경로를 입력해주어야 한다고 하는데 제가 잘못 입력한건지 계속 저런 메시지가 뜹니다 ㅠㅠ 경로 입력 방법에 대해 자세히 설명해주실 수 있을까요 ? ㅠㅠ
이런 식으로 코드를 사용중입니다 from PyQt6.QtWidgets import * from PyQt6.QtCore import * class thread (Qthread): def __init__(self): super().__init__() def run(self): while True: mainbot_window.fun1() class UI (QWidget): def __init__(self): super().__init__() self.inits() self.T1 = thread() self.T1.start() def inits(self): print("각종 변수 설정") def fun1(self): print("run code") def main(args=None): global mainbot_window app = QApplication(sys.argv) mainbot_window = UI() mainbot_window.show() try: app.exec() except KeyboardInterrupt: pass if __name__ == '__main__': main() 여기서 global 변수를 사용하지 않고 싶습니다. 글로벌 변수를 사용하지 않고 Thread 에서 Qwidget 의 함수를 사용할 방법이 있을까요? 시도한것 thread 에서 pyqtsignal.emit 을 사용해서 시도해봤는데 ui가 검은 화면으로 뜬체 작동하지않습니다. Qthread 대신 Qtimer 를 사용 =>작동은 잘되나 ui를 표시하는데 약간의 딜레이가 생깁니다. 그래서 되도록이면 Thread를 사용하고싶습니다.
안녕하세요 3강 콘다 가상환경에서 비주얼 스튜디오 터미널에서 conda activate myST해도 터미널에 계속 PS로 표시되며 가상환경으로 들어가지 않습니다. cmd에서는 같은 명령어를 입력하면 들어가지는데 비주얼 스튜디오 터미널에서는 들어가지지 않는 것 같습니다. 뭐가 문제일까요?
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
영상통화 강의 따라하다가 다음과 같은 에러가 발생하였는데 어떻게 수정해야 하는지 모르겠어 문의드립니다. Running Gradle task 'assembleDebug'... lib/screen/cam_screen.dart:57:50: Error: Too many positional arguments: 0 allowed, but 1 found. Try removing the extra positional arguments. RtcEngineContext context = RtcEngineContext(APP_ID);
[Bloc 응용] 실전 앱 만들기 (책 리뷰 앱) : SNS 로그인, Firebase 적용, Bloc 상태 관리, GoRouter
안녕하세요 개남님 개남님처럼 로그인한후에 Unknown에서 unauth로 가면서 signup으로 가야하는데 저는 unauth에서 Auth로 가면서 그냥 로그인 페이지에 머무르는데.. 이유가 뭘까요? 감사합니다. (애플로그인은 아직 구현 못하고 구글로그인만 구현을 했습니다) https://github.com/Bamschool/book_review
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 코드팩토리 디스코드 https://bit.ly/3HzRzUM Flutter 강의를 구매하시면 코드팩토리 디스코드 서버 플러터 프리미엄 채널에 들어오실 수 있습니다! 디스코드 서버에 들어오시고 저에게 메세지로 강의를 구매하신 이메일을 보내주시면 프리미엄 채널에 등록해드려요! 프리미엄 채널에 들어오시면 모든 질의응답 최우선으로 답변해드립니다! 이상없이 실행은 되는데 에러가 발생하는 이유가 궁금합니다.
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
안녕하세요 이전에 빠른 답변 주셔서 감사합니다. 현재 FetchMore 로딩 UI 작업하기 강의를 듣고 복습 중입니다. 그중에 CursorPaginationRefetching 상황은 데이터를 들고 있는 상황에서 새로고침을 하여 새로 데이터를 수신하는 중이라 이해 하였습니다. 이 코드가 현재 제가 강의를 진행한 상태에서는 불필요한 코드가 아닌가 생각이 들어서 질문 드립니다. CursorPaginationRefetching 조건은 아래와 같다고 강의하셨습니다. else { // 만약에 데이터가 있는 상황이라면 // 기존 데이털르 보존한채로 Fetch (API 요청)를 진행 if (state is CursorPagination && !forceRefetch) { final pState = state as CursorPagination; state = CursorPaginationRefetching( meta: pState.meta, data: pState.data, ); } 그리고 아래 코드 부분은 어떤 조건이든 무조건 실행되어 새로 데이터를 받아오는 코드입니다. final resp = await repository.paginate( paginationParams: paginationParams, ); 이 다음에 실행되는 코드는 state에 데이터를 넣는 과정으로 CursorPaginationFetchingMore 조건이 아니면 무조건 else가 실행되어 위에서 받아온 새로운 데이터를 state에 대입하는 과정을 거치게 됩니다. if (state is CursorPaginationFetchingMore) { final pState = state as CursorPaginationFetchingMore; // 기존 데이터에 // 새로운 데이터 추가 state = resp.copyWith( data: [ ...pState.data, ...resp.data, ], ); }else{ state = resp; } 다시 저의 의문점을 정리하면 FetchMore 로딩 UI 작업하기까지 진행한 상태에서 코드를 보면 CursorPaginationFetchingMore 조건이 아니라면 무조건 state = resp 가 실행되기 때문에 state = CursorPaginationRefetching(meta: pState.meta,data: pState.data )를 지정하는 과정이 있든 없든 상관이 없는것 같아보인다는 점 입니다. 결국 CursorPaginationRefetching일때 RestaurantScreen에서 작동하는 로직이 없는 거 같은데 맞나요?? 아니면 제가 놓친 부분이 있나요??