[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
수업을 계속 반복해서 암기하고 있습니다. 달력 수업도 현재까지 10번 이상 반복하고 있는 것 같은데요, 일주일전만해도 잘 완성됐었습니다. 그런데 오늘 flutter pub run build_runner build를 하려고 하니, g.dart 파일 생성이 안되고 이렇게 에러가 뜹니다. 버전 문제인가 싶어 flutter upgrade도 해보고 여러 세팅값들을 버전에 맞도록 업그레이드 시도해봤는데 그래도 여전히 같았습니다. 혼자 해결방법을 찾으려고 몇시간째 서치해봤는데 방법을 못찾겠네요, 조언 부탁드립니다. PS C:\Users\haK\StudioProjects\calendarmaking> flutter pub run build_runner build Deprecated. Use dart run instead. Resolving dependencies... (1.0s) Got dependencies. Building package executable... (6.8s) Failed to build build_runner:build_runner: ../../AppData/Local/Pub/Cache/hosted/pub.dev/watcher-1.0.2/lib/src/constructable_file_system_event.dart:7:57: Error: The class 'FileSystemEvent' can't be extended, implemented, or mixed in outside of its library because it's a seale d class. abstract class _ConstructableFileSystemEvent implements FileSystemEvent {
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
안녕하세요! 현재 서비스 개발중인데요, 기획과 디자인을 업무로 시작해 사정상 개발까지 하게되었는데요, 선생님 강의가 정말 많이 도움이 되고 있습니다! 감사합니다. 작업을 하다 보니 실제 폰에 연결해서 확인해보고 싶어 연결을 해보았습니다. (애플 아이폰 12 프로) 그런데 플러터 ios 시뮬레이터 아이폰 12 프로 보는것 폰트사이즈가 다르게 나옵니다. 어떻게 하면 시뮬레이터에와 동일하게 실제 핸드폰에서 확인할 수 있을까요? 동일한 문제를 겪고 있는 유저를 찾았는데요, 댓글 어떤 유저는 이렇게 해결 했다고 하는데 이렇게 하면되는걸까요? 이해를 하고 싶은데 잘 안되서요! MediaQeury.of(context).copyWith(texScaleFactor: 1.0), child: child!, 이렇게 작성하니 해결 되었다고 해서 적용해보니 해결이 되긴 합니다. ㅠㅠ 깃헙원문 https://github.com/flutter/flutter/issues/55956 void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return ScreenUtilInit( designSize: Size(390, 844), minTextAdapt: true, builder: (_, child) { return MaterialApp( builder: (context, child) { return MediaQuery( data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0), child: child!, ); }, title: 'BOOTHAPP', theme: ThemeData( appBarTheme: const AppBarTheme( color: ColorStyle.backGround, )), home: Realhome2(), ); }, ); } }
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
authProvider로 루트 설정하는거 정말 최고예요..!! 항상 좋은 강의에 감사드립니다! 강의 듣다가 하나 궁금한 점이 있는데, 보통 스플래시 화면에서 데이터를 미리 불러온다던지 일부러 1-2초 일정한 딜레이를 건다거나 스플래시에 움직이는 애니메이션을 넣는 경우에는 이런 authProvider에서 어떻게 해결해야하나요? redirectLogic 안에서 isInitialized라고 지정해둔 변수를 이용해서 해봤는데 이게 맞는지ㅠ 좀 더러운거같아서 여쭤봅니다! Future<String?> redirectLogic( BuildContext context, GoRouterState state) async { if (!isInitialized) { isInitialized = true; return '/splash'; } if (isInitialized) { await Future.wait([ Future.delayed(const Duration(seconds: 1)), // 1초 지연 ]); } final UserBase? user = await ref.read(userProvider); // print('redirectLogic - user : ${user.toString()}'); final loggingIn = state.location == '/login'; // 유저 정보가 없는데 // 로그인중이면 그대로 로그인 페이지에 두고 // 만약에 로그인중이 아니라면 로그인 페이지로 이동 if (user == null) { return loggingIn ? null : '/login'; } if (user is UserModel && loggingIn || state.location == '/splash') { // 여기서 미리 가져오면 좋을 데이터를 가져오기 } // user가 null이 아님 // UserModel // 사용자 정보가 있는 상태면 // 로그인 중이거나 현재 위치가 SplashScreen이면 // 홈으로 이동 if (user is UserModel) { return loggingIn || state.location == '/splash' ? '/' : null; } // UserModelError if (user is UserError) { return !loggingIn ? '/login' : null; } return null; }
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
중급반 섹션6 <Dio onError Interceptor 작업하기>강의 8분 정도에 onError작업하는 과정에서 에러사항 처리하는 과정에서 refresh토큰으로 accessToken 요청경로가 아래 같은 경로로 설정하셨는데, final isPathRefresh = err.requestOptions.path == '/auth/token'; restaurnatRepository 에서 baseUrl을 이렇게 설정하셨는데 강의처럼 설정하면 http로 시작안하면 baseUrl이 온다고 나와있어서 'http://$ip/restaurant' /// If the `path` starts with 'http(s)', the `baseURL` will be ignored, otherwise, /// it will be combined and then resolved with the baseUrl. 'http://$ip/restaurant/auth/token'이 이렇게 되는게 아닌지 궁금합니다. +그리고 Riverpod pdf자료 추가 안되어있는거 같은데 이것도 확인한번부탁드릴게요~ㅎ
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
print(parsedPeople); 을 했을 때 Instace of 'Person'으로만 나와서 Person class안에 toString이라는 method를 선언했는데요. class안에 method를 선언한 것 만으로 print(parsedPeople); 값이 바뀐게 맞나요? class에 선언한 method는 다 실행이 되는건가요?
안녕하세요 강의 정말 잘 들었습니다. 강의를 들은 후 위치권한 설정 등 기타 상황을 처리하기 위한 분기 로직과 위젯, 화면등을 구성하다 보니 강의에서는 View, Viewmodel, Model, Repository 정도로 나누었던 폴더에 서로 다른 기능의 여러 파일들이 들어가니 알아보기가 쉽지 않은데요, 앱의 기능이 많아지고 복잡해지는 경우에는 프로젝트 폴더 구성을 어떻게 하는지 궁금합니다. 기능별로 하위에 MVVM으로 폴더를 구성해야 할까요?
하고 싶은 것 일부 주문이 서비스 유형: 픽업임에도 배달메뉴코드로 생성되어 이를 찾고 싶습니다. (배달메뉴와 픽업메뉴 코드는 서로 다름) 엑셀 vookup을 사용해서 상품코드를 배달 메뉴 테이블에서 검색하고, 검색되지 않으면 오주문으로 판단하는 코드를 구현했습니다. 같은 프로그램을 파이썬을 통해 구현해보고 싶은데, 다른 dataframe에 없는 값을 찾아 행을 추가하는 과정이 어려워 조언을 구하고 싶습니다. 파이썬 코드 df_pickup = 픽업 주문내역 데이터 프레임 delivery_menu_code = df_delivery_menu["상품코드"] df_misorder = pd.DataFrame() # 픽업 주문내역에서 상품코드를 꺼내 해당 상품코드가 배달 메뉴 코드에 포함되어 있는지 확인 # 만약에 코드가 없으면 해당 row를 df_misorder에 추가 for idx, row in df_pickup.iterrows(): misorder = df_delivery_menu[delivery_menu_code.str.contains(row["상품코드"], na = False)] if len(misorder) != 0: df_misorder.concat(row) else: pass # 어떻게 추가해도 계속 0개로 나와서, 도와주시면 감사드리겠습니다! len(df_misorder)
보통 위젯이 그려지는 상태가 바뀌는 상황일때는 stful 위젯으로 코드를 작성하는데, Provide강의에서는 Stateless위젯으로도 화면에 그려지는 위젯이 바뀌는 원리가 어떻게 되는건가요? Provider 만의 고유 특징인지 아니면 어떤 예외의 원리가 따로 있는건지 궁금해요!