[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 코드팩토리 디스코드 https://bit.ly/3HzRzUM Flutter 강의를 구매하시면 코드팩토리 디스코드 서버 플러터 프리미엄 채널에 들어오실 수 있습니다! 디스코드 서버에 들어오시고 저에게 메세지로 강의를 구매하신 이메일을 보내주시면 프리미엄 채널에 등록해드려요! 프리미엄 채널에 들어오시면 모든 질의응답 최우선으로 답변해드립니다! 플러터 시뮬레이터로 로그인을 시도하는데 아래와 같은 오류가 나요..[VERBOSE-2:dart_vm_ initializer.cc (41)] Unhandled Exception: DioException [connection error]: The connection errored: Connection refused This indicates an error which most likely cannot be solved by the library. Error: SocketException: Connection refused (OS Error: Connection refused, errno = 61), address = 127.0.0.1, port = 534693000번 포트가 아니라 53469로 사용하고 있어서 나는 오류인 것은 알겠는데,어떻게 시뮬레이터를 3000번 포트에서 실행할 수 있을지 모르겠어요.
댓글 불러오는 과정을 보고 있는데, 지금까지 각 모델(feed, comment) 전부 Firebase에서 전체 document 받아와서 list로 변환 후, update 하고나면 Firebase에 업로드하는데 그와 동시에 screen에 반영하기 위해 새로 get하여 list를 만들어서 표시해주는 것 같습니다. Firebase StreamBuilder를 사용하면 실시간으로 모든 변화들이 바로 업데이트 되어서 기존에 많이 썼는데, 혹시 이렇게 하지 않는 이유가 있을까요? (데이터 통신이 불필요하게 많이 일어나서 트래픽/요금 등의 문제가 있다든지 하는 현실적인 이유가 있는지 궁금했습니다)
python-telegram-bot 20 버전부터는 비동기 프로그래밍이 적용되어 강의와는 다른 코드가 필요합니다. https://github.com/python-telegram-bot/python-telegram-bot/wiki/Introduction-to-the-API 위 깃허브 python-telegram-bot 공식 위키 페이지로 가시면 필수적이고 간단한 용례들을 보실 수 있습니다.
안녕하세요. Provider 로 된 코드를 Riverpod 로 변경 해보려고 하면 벽에 부딪쳐네요. class CartService with ChangeNotifier { List<CartItem> _cartItemList = const []; List<CartItem> get cartItemList => _cartItemList; // 상품 목록 // 선택된 상품 목록 List<CartItem> get selectedCartItemList { return _cartItemList.where((cartItem) => cartItem.isSelected).toImmutable(); // cartItemList에서 isSelected 값이 true 항목만 불변 배열로 반환하는 Getter를 구현 } // 상품 추가 void add(CartItem newCartItem){ _cartItemList = [..._cartItemList, newCartItem].toImmutable(); notifyListeners(); } // 상품 수정 void update(int selectedIndex, CartItem newCartItem) { _cartItemList = _cartItemList.asMap().entries.map((entry) { return entry.key == selectedIndex ? newCartItem : entry.value; }).toImmutable(); notifyListeners(); /*** * 업데이트하고 싶은 항목의 인덱스인 selectedIndex에 해당하는 항목을 * 새로운 newCartItem으로 변경하여 새로운 불변 배열을 생성하도록 구현 */ } // 상품 삭제 void delete(List<CartItem> deleteList){ _cartItemList = _cartItemList.where((cartItem) { return !deleteList.contains(cartItem); }).toImmutable(); notifyListeners(); /*** * 삭제하고 싶은 목록을 deleteList로 전달받고, * 해당 배열에 들어있지 않은 CartItem만 남긴 불변 배열을 생성하도록 구현 */ } } 위 코드를 아래와 같이 변경하고자 일부 구현을 해보고 있습니다. 틀린 부분 수정 및 상품 수정 코드를 어떻게 추가해야 될까요? final cartProvider = NotifierProvider<CartNotifier, List<CartItem>>(CartNotifier.new); class CartNotifier extends Notifier<List<CartItem>> { @override List<CartItem> build() => const []; // 상품 목록 // 상품 추가 void add(CartItem newCartItem){ state = [...state, newCartItem]; // state 는 immutable 데이터이기 때문에 직접적으로 state 를 변경할 수 없다. } // 상품 삭제 void delete(List<CartItem> deleteList){ state = state.where((cartItem) => cartItem != deleteList).toList(); } // 상품 수정 void update(int selectedIndex, CartItem newCartItem) { // CartItem 에 유니크한 id 값이 없는 거 같고, 선택한 index 값으로 찾아서 update 해야 하는데 모르겠음. } /* state = [ for (final item in state) if (item.id == id) newCartItem else item, ]; */ // 선택된 상품 목록 List<CartItem> get selectedCartItemList { return state.where((cartItem) => cartItem.isSelected).toList(); } }
안녕하세요 강사님 flutter를 이용한 앱 개발에 관해 궁금한게 있어서 글 올려드립니다. 2024년에 flutter를 이용해 가계부 앱을 하나 만들어 출시하는 것을 목표로 하고 있는데요 현재 제가 다니는 회사의 backend가 java/spring 조합이기에 웬만하면 익숙한 java/spring를 그대로 이용해 앱의 비즈니스 로직을 구현하고 싶어서요 즉, 아래의 조합으로 앱을 개발하고 싶은데요(web은 생각하지 않고 오직 모바일 app만 생각중입니다.) front-end : flutter / back-end : spring 혹은 spring-boot 혹시 제가 말씀드린 조합을 이용해 flutter app을 개발하는 것이 흔한(?) 경우인지 궁금합니다. google이나 youtube에 이와 관련된 내용을 찾아보니까 어느정도 나오기는 하는데 원하는 만큼의 자료를 얻지 못 해서 혹시 제가 생각하는 조합이 일반적인 방법이 아니어서 그런 것인지 의문이듭니다. 오히려 'flutter nodejs' 로 검색을 하니까 유의미한 내용이 더 많이 나오더라고요 강사님 의견은 어떠신지 궁금합니다!!! 추가로 front, backend 와는 별개로 DB는 postgresql 혹은 mongoDB 중 하나를 고민중인데 SQL과 NoSQL이라 상반된 DB이긴 한데 애초에 구상하고 있는 app이 그렇게 복잡하거나 대량의 데이터를 다루는 것이 아니기에 SQL과 NoSQL의 특성까지 고려할 수준은 아니라고 생각해서 후보군을 postgresql과 mongoDB로 좁혔는데 이것 중 하나를 사용해도 무방한 개발 스펙일지도 궁금합니다! (혹시 몰라 말씀드리면 아직 커리큘럼 중 firebase 관련 강의는 듣지 않은 상태입니다!)
테스트를 진행할 때 강사님께서 build 때 보다 test 가 빠르다 하셨는데 동일하게 2~4분 정도 걸리는데요, 무료 버젼이라 느린건가요 ? 테스트 할 때 primary color 를 초록색으로 변경했음에도 불구하고, 변경전인 파란색으로 나오는데요, 어떻게 수정하는지요 ? 답변 부탁드립니다. 감사합니다.
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
Navigator.of(context).pop(maxNumber.toInt());을 사용하였을 때는 AndroidManifest.xml을 수정해야하는 오류가 발생하는데, Navigator.pop(context, maxNumber.toInt());을 사용하면 오류가 발생하지 않습니다. 어떤 차이가 존재하는겁니까?
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
type 'CursorPaginationLoading' is not a subtype of type 'CursorPagination<dynamic>' in type cast pagination-1 까지 잘 진행했는데 2~4까지 묶어서 실습하는 중 위와 같은 오류 때문에 계속 loading 바가 나옵니다. 다시 한번 소스코드를 강사님 강의를 보며 점검해 봤는데, 찾을 수가 없어 도움을 청합니다.
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
강사님 강의를 쭉 보고, 앱을 개발 해보고 있는데요. 모델에 List<String>이 있고, toJson으로 생성해서 GET 형태로 서버로 보냈는데, List<String>에 'aaaa', 'bbbb'라는 값이 있을때, name=aaaa&name=bbbb 라고, 중복된 변수명을 가지고 생성이 되어서 서버로 전송하더군요. 이렇게 생성되는게 정상적인 형태인가요? 아니면, 옵션 같은걸 넣어야하는건지, 몰라서 문의드립니다.
해당 강의에서 작성하는 코드를 그대로 실행하면 되지 않습니다. 현재 iframe 태그가 자바스크립트를 통해 실행되기 때문에 페이지가 로드된 후에도 자바스크립트가 실행될 시간이 필요합니다. 강의처럼 iframe의 주소만 따와서 실행시키는 것이 아닌 전체 주소를 가져와 iframe 태그로 전환시켜주고 자바스크립트 실행까지 기다려 주는 방식으로 진행하셔야 합니다. https://velog.io/@os_js/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%9B%B9-%ED%81%AC%EB%A1%A4%EB%A7%81%EC%9D%B4%EC%9A%A9-%ED%85%94%EB%A0%88%EA%B7%B8%EB%9E%A8-%EC%B1%97%EB%B4%87 저도 강의중 안됐던 내용이 있었기에 그에 대한 내용을 블로그에 올려두었습니다. 강의 진행대로 따라하다가 안되는 부분만 정리하여 올렸기 때문에 강의내용과 비교하시면서 보셔야 될 듯 합니다.
SettingBottomSheet에서 ThemeServices는 context.read 해도 되고, LangService는 context.watch 로 해야하는 이유가 무엇인가요? toggleLang, toggleTheme 함수 안에서 똑같이 notifyListeners를 호출하는데 무슨 차이가 있는지 궁금합니다.
안녕하세요. 기존에 제가 코딩할 때는 provider 파일에서 모든 동작, 상태변화를 한번에 처리했는데, 이 강좌에서는 이를 세분화하여 state, provider, repository 파일로 나눈 것 같습니다. 제가 초보여서 잘 모르겠지만, 플러터 업계에서는 이러한 작업패턴이 존재하는 것인가요? 정확한 명칭이 있나요? 제가 각 파일의 역할을 이해하지 못해서 구글링을 해봐도 원하는 답변을 찾을 수가 없어서 문의드립니다. 혹시 UI - State - Provider - Repository 관계를 개념적으로 설명해주시면 많은 도움 될 것 같습니다.