[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
재생 중에 슬라이더를 조절할려고하는데 슬라이더를 누른채로 동작을 안하면 영상이 자동으로 재생되어 버립니다 슬라이더에서 손을 뗄떼까지 영상이 멈추게 할수있을까요 인프런강의처럼요 또 한가지 질문은 videioController 는 initializeController()안에서 아래 코드로 할당이되는데 videoController = VideoPlayerController.file( File(widget.video.path), 이부분은 deadcode가 아닐까요 if (videoController == null) { return CircularProgressIndicator();
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
제 코드는 아래와 같고, import 'package:advanced_app/product/model/product_model.dart'; import 'package:advanced_app/user/model/patch_basket_model.dart'; import 'package:advanced_app/user/model/basket_item_model.dart'; import 'package:advanced_app/user/repository/user_me_repository.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:collection/collection.dart'; final basketProvider = StateNotifierProvider<BasketProvider, List<BasketItemModel>>((ref) { final repository = ref.watch(userMeRepositoryProvider); return BasketProvider(repository: repository); }); class BasketProvider extends StateNotifier<List<BasketItemModel>>{ final UserMeRepository repository; BasketProvider({ required this.repository, }):super([]); Future<void> patchBasket () async { await repository.patchBasket( body: PatchBasketBody( basket: state.map( (e) => PatchBasketBodyBasket( productID: e.product.id, count: e.count)) .toList()) ); } Future<void> addToBasket({ required ProductModel product,}) async { // 1 아직 장바구니에 해당 상품이 없는 경우 -> 추가 // 2 동일한 상품이 있는 경우 -> count +1 final exists = state.firstWhereOrNull((e) => e.product.id == product.id) != null; if(exists){ state = state .map( (e) => e.product.id == product.id ? e.copyWith(count: e.count +1) : e ).toList(); }else{ state = [ ...state, BasketItemModel( product: product, count:1) ]; } await patchBasket(); } Future<void> removeFromBasket({ required ProductModel product, bool isDelete = false}) async{ // isDelete면 count와 상관없이 삭제 final exists = state.firstWhereOrNull((e) => e.product.id == product.id) != null; if(!exists){ return; } // 이제 무조건 있는 경우 final existingProduct = state.firstWhere((element) => element.product.id == product.id); // 1개 있는 경우 삭제 (해당하는 상품 빼고 리스트 만들어서 넣어 주는 방식) if (existingProduct.count == 1 || isDelete){ state = state .where((e) => e.product.id != product.id) .toList(); } else{ // 2개 이상 있는 경우 state = state .map((e) => e.product.id == product.id? e.copyWith( count: e.count -1) : e).toList(); } } } 에러 로그는 아래와 같습니다. -------------- [VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: type 'Null' is not a subtype of type 'Map<String, dynamic>' in type cast #0 $BasketItemModelFromJson (package:advanced app/user/model/basket_item_model.g.dart:11:54) #1 new BasketItemModel.fromJson (package:advanced_app/user/model/basket_item_model.dart:25:14) #2 UserMeRepository.patchBasket.<anonymous closure> (package:advanced app/user/repository/user_me_repository.g.dart:93:45) #3 MappedListIterable.elementAt (dart:_internal/iterable.dart:415:31) #4 ListIterator.moveNext (dart:_internal/iterable.dart:344:26) #5 new GrowableList. ofEfficientLengthIterable (dart:core-patch/growable_array.dart:189:27) #6 new GrowableList.of (dart:core-patch/growable array.dart:150:28) #7 new List.of (dart:core-patch/array_patch.dart:47:28) #8 ListIterable.toList (dart:_internal/iterable.dart:214:7) #9 UserMeRepository.patchBasket (package:advanced app/user/repository/user_me_repository.g.dart:94:10) Postman에서 get http://127.0.0.1:3000/user/me/basket 실행해 보면, [ { "count": 1 } ] 처럼 product가 제대로 안들어가고 count 값만 들어가 있습니다. jsonSerializable 문제인가 싶어서 모델들 다 체크해봤는데... 코드 제너레이션도 정상적으로 되는데... 뭐가 문제일까요? 이것 때문에 3시간 넘게 씨름 중인데 도움 주시면 감사하겠습니다!
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
══╡ EXCEPTION CAUGHT BY IMAGE RESOURCE SERVICE ╞════════════════════════════════════════════════════ The following NetworkImageLoadException was thrown resolving an image codec: HTTP request failed, statusCode: 404, http://10.0.2.2:3000/img/%EB%96%A1%EB%B3%B6%EC%9D%B4/%EB%96%A1%EB%B3%B6%EC%9D%B4.jpg When the exception was thrown, this was the stack: #0 NetworkImage._loadAsync (package:flutter/src/painting/_network_image_io.dart:135:9) <asynchronous suspension> Image provider: NetworkImage(" http://10.0.2.2:3000/img/떡볶이/떡볶이.jpg ", scale: 1.0) Image key: NetworkImage(" http://10.0.2.2:3000/img/떡볶이/떡볶이.jpg ", scale: 1.0) ════════════════════════════════════════════════════════════════════════════════════════════════════ 어떻게 해야할까요..?
안녕하세요! 제로초님! 보너스 강의까지 잘 챙겨보고 있습니다. 매번 감사합니다! 제 질문은..! server action 함수쪽에서 fetch config 객체에 credentials 을 include로 해줘야 쿠키(세션)를 API 요청 시 같이 태워서 보낼 수 있다고 설명해주셨는데, 혹시 이것이 next-auth 로부터 도움을 받는 것일까요? 강의 수강 후, next 14로 프로젝트를 구현하고 있는데, fetch 할 때, credentials 를 include 해주었음에도 불구하고, 브라우저 application 탭에서 확인 할 수 있는 쿠키가 태워지지 않아서요. 해당 쿠키는 서버에서 로그인 시에 set-cookie 해준 쿠키이고, 프론트엔드는 localhost , 서버는 ec2에 배포된 서버입니다. 그래서 현재는 server action 함수내에서 next.js에서 지원해주는 cookie() 를 이용해서 fetch config 객체 내 headers 에 직접 쿠키를 넣어주고 있는데, 강의에서는 credentials 만으로 API 요청시 쿠키(세션)을 잘 태워서 보내주고 있는 것 같아 질문을 남기게 되었습니다.
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
안녕하세요. 강의를 통해서 CustomScrollView에 TabBar를 적용 해보았는데요. 앱상단에는 컨텐츠를 만들고 중간쯤 탭바를 구현해서 각 탭바뷰에 ListViewBuild를 적용 하려 하는데요, TabBarView에 ListView나 ListViewBuild를 적용하면 잘 동작하는데, TabBarView에 들어오는 컨텐츠 내용이 길 경우에는 상관이 없는데, 컨텐츠 내용이 적을 경우 아래 코드처럼 탭1에 컨테이너 높이를 주거나 (SliverFillRemaining 전체 남는 요소를 다채워서 높이값이 안먹고,) 탭2에 텍스트 위젯만 썻을 경우에 화면 스크롤시 현재 남은 공간 외에도 더 많은 공간이 스크롤되서 컨텐츠 내용도 적은데 스크롤이 너무 많이 나타나서. NestedScrollView 도 그렇고 CustomScrollView 그렇고 동일한 현상이 나타나서... 기본 스크롤 공간여백을 현재 컨텐츠가 가지고 있는 공간만큼만 스크롤 되게 할 수는 없을까요? 아무리 찾아봐도 해결할 수가 없어서 도움 요청드려요 ㅠ DefaultTabController( length: 2, child: CustomScrollView( slivers: [ SliverList( delegate: SliverChildListDelegate([ Column( children: [ Text('컨텐츠'), Text('컨텐츠'), Text('컨텐츠'), Text('컨텐츠'), Text('컨텐츠'), Text('컨텐츠'), ], ), ]), ), SliverAppBar( floating: true, pinned: true, bottom: TabBar( tabs: [ Tab(text: '탭 1'), Tab(text: '탭 2'), ], ), ), SliverFillRemaining( child: TabBarView( children: [ // 첫 번째 탭에 대한 내용 Container( height: 200, color: Colors.red, ), // 두 번째 탭에 대한 내용 Text('두 번째 탭 내용'), ], ), ) ], ), )
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
강의에서는 패스워드를 암호화하지 않고 그냥 보내는 방식으로 설명해주셨는데요. Flutter 에서 패스워드를 RSA 암호화하고 서버에서 복호화 처리하는 방법으로 실제 프로젝트에서는 사용할 거 같습니다. Flutter 에서 RSA 암호화 하는 예제 코드 좀 부탁드리겠습니다.
오픈 카카오톡 으로 문의주시면 더 빠르게 답변 받으실 수 있어요 :) 에뮬레이터 실행하면 이런 오류문구가 계속 뜹니다...... 혹시나 예전에 어떤 책 보면서 해놓은 환경변수 설정해 놓은게 있어서 그거 때문인가 싶어 그 환경 변수 지워봤는데 도움이 되진 않네요..... 구글에 쳐봤는데 제가 이해할 수 가 없어서 어떻게 해야 할 지 모르겠습니다...
오픈 카카오톡 으로 문의주시면 더 빠르게 답변 받으실 수 있어요 :) 에뮬레이터 실행하면 이런 오류문구가 계속 뜹니다...... 혹시나 예전에 어떤 책 보면서 해놓은 환경변수 설정해 놓은게 있어서 그거 때문인가 싶어 그 환경 변수 지워봤는데 도움이 되진 않네요..... 구글에 쳐봤는데 제가 이해할 수 가 없어서 어떻게 해야 할 지 모르겠습니다...
오픈 카카오톡 으로 문의주시면 더 빠르게 답변 받으실 수 있어요 :) 에뮬레이터 실행하면 이런 오류문구가 계속 뜹니다...... 혹시나 예전에 어떤 책 보면서 해놓은 환경변수 설정해 놓은게 있어서 그거 때문인가 싶어 그 환경 변수 지워봤는데 도움이 되진 않네요..... 구글에 쳐봤는데 제가 이해할 수 가 없어서 어떻게 해야 할 지 모르겠습니다...
오픈 카카오톡 으로 문의주시면 더 빠르게 답변 받으실 수 있어요 :) 에뮬레이터 실행하면 이런 오류문구가 계속 뜹니다...... 혹시나 예전에 어떤 책 보면서 해놓은 환경변수 설정해 놓은게 있어서 그거 때문인가 싶어 그 환경 변수 지워봤는데 도움이 되진 않네요..... 구글에 쳐봤는데 제가 이해할 수 가 없어서 어떻게 해야 할 지 모르겠습니다...