[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
안녕하세요 상태관리 프로젝트에 적용하기 부분이 많이 어렵네요 여러번 강의를 보고 restaurant_provider.dart의 코드를 보며 이해를 하려 했는데 제가 이해를 한것이 맞는지 몰라 이곳에 질문을 남기게 되었습니다. CursorPagination의 상태 관련 5개중 아래 두가지 상태를 제가 이해한게 맞나요?? 두가지 모두 로딩중인데 아래 상황에서 로딩중 CursorPaginationRefetching: 데이터를 받아온 상태에서 다시 새로고침을 하여 로딩 중 CursorPaginationFetchMore: 데이터를 받아온 상태에서 새로운 데이터를 추가 하는 중 바로 반환하는 상황 바로 반환하는 상황이라는 것이 데이터를 받아 오는 중, 즉 로딩중 일때나 더이상 추가 데이터가 없을 때paginate() 함수 바로 빠져 나와야 한다는 뜻인가요?? 그리고 fetchMore가 아닐때 - 새로고침의 의도가 있을 수 있다. fetchMore가 아닐때라고 주석을 달아 주셨는데 이것은 false일때라는 뜻인가요?? 그럼 감사합니다 .
[Bloc 응용] 실전 앱 만들기 (책 리뷰 앱) : SNS 로그인, Firebase 적용, Bloc 상태 관리, GoRouter
안녕하세요 개남님 (base) choejonghwan@choejonghwan-ui-MacBookPro review_book % flutter pub run build_runner watch 이거 하고나서부터 [INFO] Generating build script completed, took 149ms [INFO] Setting up file watchers completed, took 4ms [INFO] Waiting for all file watchers to be ready completed, took 201ms [INFO] Reading cached asset graph completed, took 34ms [INFO] Checking for updates since last build completed, took 470ms [INFO] Running build completed, took 6ms [INFO] Caching finalized dependency graph completed, took 20ms [INFO] Succeeded after 28ms with 0 outputs (0 actions) 여기까진 왔는데 멈추네요 여기서... part 'naver_book_search_option.g.dart'; 가 뜨지도않고.. 사진 두개첨부합니다. 감사합니다.
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
final baseBorder = const OutlineInputBorder( borderSide: BorderSide( color: INPUT_BORDER_COLOR, ), ); 이 코드를 CustomTextFormField 클래스의 필드로 넣지 않고 build 메서드 안에 작성하신 이유가 따로 있을까요? 이렇게 작성하면 렌더링될때마다 baseBorder가 만들어져야하니 메모리관리면에서 손해인거 아닌가 싶어서요!
프로젝트를 생성하고 첫 실행을 했는데 아래와 같은 오류가 발생했습니다. C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.CppCommon.targets(247,5): error MSB8066: 'C:\Users\tnqls\OneDrive\���� ȭ��\ff\hello_f\build\windows\CMakeFiles\17bcc7b3690274761bc31777eb11dab3\flutter_windows.dll.rule;C:\Users\tnqls\OneDrive\���� ȭ��\ff\hello_f\build\windows\CMakeFiles\e86d85ec92b8cca453a41bad4e8ed811\flutter_assemble.rule;C:\Users\tnqls\OneDrive\���� ȭ��\ff\hello_f\windows\flutter\CMakeLists.txt'�� ���� ����� ���� ���尡 ����Ǿ����ϴ�(�ڵ� 1). [C:\Users\tnqls\OneDrive\���� ȭ��\ff\hello_f\build\windows\flutter\flutter_assemble.vcxproj] Exception: Build process failed. 이후 프로젝트의 안드로이드 파일에 에러표시가 떠 cmd에 flutter doctor를 실행한 결과 Doctor summary (to see all details, run flutter doctor -v): [√] Flutter (Channel stable, 3.10.6, on Microsoft Windows [Version 10.0.22621.1992], locale ko-KR) [√] Windows Version (Installed version of Windows is version 10 or higher) [!] Android toolchain - develop for Android devices (Android SDK version 34.0.0) X cmdline-tools component is missing Run path/to/sdkmanager --install "cmdline-tools;latest" See https://developer.android.com/studio/command-line for more details. X Android license status unknown. Run flutter doctor --android-licenses to accept the SDK licenses. See https://flutter.dev/docs/get-started/install/windows#android-setup for more details. [√] Chrome - develop for the web [√] Visual Studio - develop for Windows (Visual Studio Community 2022 17.5.4) [√] Android Studio (version 2022.2) [√] VS Code (version 1.80.1) [√] Connected device (3 available) [√] Network resources ! Doctor found issues in 1 category. 하나의 오류가 있는듯 한데 현재 안드로이드 스튜디오로 다른 앱 개발 활동을 하고있는것이 혹시 연관이 있을까요? 해결방안을 모르겠어서 질문 남깁니다. 도와주세요..
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
GoRouter 적용하는 강의 후 처음 splash screen으로 진입 후 getMe함수를 통해 state가 null이 되는 로직을 통과했음에도 router의 redirect를 따르지 않고 계속해서 splash screen에서 머무는 모습이 나타납니다. print로 결과를 확인해보니 처음 redirect 로직을 검증할 때 UserModelLoading의 Instance로 나타나고 이후 getMe를 통해 null이 되더라도 새롭게 redirection이 일어나지 않는 것 같습니다. 고민하다가 해결책이 떠오르지 않아 문의남깁니다!
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
border: baseBorder 로 설정했을때 color 를 Colors.red 로 해놔도 아무 변화가 없습니다. enabledBorder: baseBorder 설정했을때 그제서야 빨간색이 적용됩니다. focusedBorder 는 커서가 있을때 border 의 형태로 이해가 되었는데 일반 border 와 enabledBorder 속성은 어떤차이가 있는걸까요? border 속성만 사용할때는 아무 변화가 없는 이유도 궁굼합니다.
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
안녕하세요, Flutter에 익숙해지기 위해 해당 강의를 보며 샘플 코드(?)와 비슷하게 코드를 추가하고 hot reload 버튼을 눌렀습니다. 그러자 IOS simulator(iPhone 14 Pro Max)에서 "Lookup failed: title in @getters in MyHomePage in package:hello_world/main.dart" 에러가 발생하여 추가 한 코드가 정상동작을 하는지, 수정해야 하는 부분이 있는지 확인이 불가능하게 되었습니다. 혹시 제가 추가한 코드에서 문제가 될 만한 부분이 있을까요? 제가 추가한 코드와 IOS simulator 에러 화면 첨부드립니다.
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
안녕하세요. 실험적으로 Code Generator 기능을 이용해서 프로바이더를 다시 작성해보고 있습니다. 궁금한 게 Section 9. 다섯 번째 강의를 보는데, 1분 대에 나오는 RestaurantStateNotifier와 StateNotifierProvider를 어떻게 CodeGenerator를 이용해서 고칠 수 있을까 고민 중입니다. 시도한 코드는 아래와 같은데요(import는 생략했습니다): part 'restaurant_provider.g.dart'; @Riverpod(keepAlive: true) class Restaurant extends _$Restaurant { final RestaurantRepository repository; Restaurant({ required this.repository, }) { paginate(); } // 초기 상태는 Loading 상태로 @override CursorPaginationBase build() { return CursorPaginationLoading(); } paginate() async { final response = await repository.paginate(); state = response; } } 코드 제너레이션은 잘 되는데, 문제는 이를 실행시키려고 하니 다음과 같은 에러가 뜹니다. Launching lib/main.dart on iPhone 14 Pro Max in debug mode... main.dart:1 Xcode build done. 3.9s Failed to build iOS app Error (Xcode): lib/restaurant/provider/restaurant_provider.g.dart:15:3: Error: The argument type 'Restaurant Function({RestaurantRepository repository})' can't be assigned to the parameter type 'Restaurant Function()' because 'Restaurant Function({RestaurantRepository repository})' is nullable and 'Restaurant Function()' isn't. restaurant_provider.g.dart:15 Could not build the application for the simulator. Error launching application on iPhone 14 Pro Max. Exited 이전까지는 잘 됐었는데, 바로 직전 강의에서 CursorPaginationBase를 만들고, 이를 상속받는 CursorPagination 상태들을 구현하고 나서부터, 문제가 발생한 것 같습니다. 아마 CursorPagination의 경우는 data와 meta라는 필드가 들어가는데, 어디선가 Code generation에 문제가 생겨서, CursorPaginationBase가 아닌, data와 Meta를 필요로 하는 생성자가 호출된 건 아닌가 의심하는 중입니다. 아래는 위 코드로 생성된 .g.dart 파일입니다. // GENERATED CODE - DO NOT MODIFY BY HAND part of 'restaurant_provider.dart'; // ************************************************************************** // RiverpodGenerator // ************************************************************************** String _$restaurantHash() => r'50915edab0a63433f5d54b932240cf504147e391'; /// See also [Restaurant]. @ProviderFor(Restaurant) final restaurantProvider = NotifierProvider<Restaurant, CursorPaginationBase>.internal( Restaurant.new, name: r'restaurantProvider', debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') ? null : _$restaurantHash, dependencies: null, allTransitiveDependencies: null, ); typedef _$Restaurant = Notifier<CursorPaginationBase>; // ignore_for_file: unnecessary_raw_strings, subtype_of_sealed_class, invalid_use_of_internal_member, do_not_use_environment, prefer_const_constructors, public_member_api_docs, avoid_private_typedef_functions 어떻게 하면 Code Generator를 이용해서 문제를 해결할 수 있을까요?
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 코드팩토리 디스코드 https://bit.ly/3HzRzUM Flutter 강의를 구매하시면 코드팩토리 디스코드 서버 플러터 프리미엄 채널에 들어오실 수 있습니다! 디스코드 서버에 들어오시고 저에게 메세지로 강의를 구매하신 이메일을 보내주시면 프리미엄 채널에 등록해드려요! 프리미엄 채널에 들어오시면 모든 질의응답 최우선으로 답변해드립니다! video영상을 choose하면 compressing video를 거치고 메인으로 돌아가버려요 뭐가 문제일까요?
128줄에 return inside에서 inside()를 안하는 이유가 궁금합니다 @higher_order_example 자체가 inside 리턴받은 함수를 자동으로 ()붙여서 실행해주는 것인가요? 136줄에 sample_example()을 안쓰면 121줄에 있는 func 매개변수로 못넣는것인가요???