inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

위젯과 클래스

미해결

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

Boxdecoration()은 위젯이라고 볼 수 없는건가요? 볼 수 있는거 아닌가요?제가 이해하기로는 위젯과 위젯이 아닌 클래스의 차이로는위젯은 컨스트럭터 자체로 역할을 할 수 있고 위젯이 아닌 클래스는 컨스트럭터 자로 역할을 할 수는 없고, 그 컨스트럭터로 인스턴스를 만들고 그 인스턴스로 메서드나 멤버변수 이용라는걸로 이해하고 있습니다. 위 내용에 따르면 Boxdecoration()도 위젯 아닌가요?위젯과 위젯이 아닌 클래스를 나누는 명확한 기준이 있나오?

  • flutter
  • 클론코딩
강원빈 댓글 1 좋아요 0 조회수 222

riverpod 상태관리시에 궁금한점 질문드립니다.

미해결

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

안녕하세요 코팩님. 상품검색 페이지를 작업했습니다. riverpod으로 상태관리를 하며 필터(검색조건)을 provider로 구현하였습니다. 필터들은 stateProvider로 하였고 검색데이터 list는 StateNotifierProvider(필터값들 watch중)로 선언하였습니다. 기본적으로 필터가 변경될때 자동으로 재검색이 되고 있는데요. 검색결과 페이지에서 새로운 검색어를 넣고 다시 검색할 때 이슈가 있습니다. (pushReplacementNamed로 현재페이지를 다시 호출) 사정상 검색어는 provider로 하지 않고 파라미터로 받고 있습니다. 필터프로바이더들을 초기화 하지 않으면 새로운검색결과에 조건이 또 타게되서 필터들을 초기화 해주고 싶은데요. 필터를 초기화해주면 기존 리스트가 자동으로 watch중이라 재검색이 먼저 실행되어버립니다. invalidate도 마찬가지구요. 어쩔수없이 changeNotifierProvider를 써서 notifyListeners를 호출하지 않고 값을 변경하는 함수를 따로 만들어서 그걸 호출 해서 값을 초기화하고 pushReplacementNamed로 현재페이지를 검색어만 바꿔서 재호출 하는걸로 처리하고 넘어갔습니다. 이럴땐 어떻게 처리해야 할까요? 기본적인 설계를 잘못한 건지 모르겠습니다 ㅠㅠ 조언 부탁드립니다. ps. autoDispose를 걸어놔도 다음 페이지에서 해당 프로바이더를 사용하면 dispose가 되지 않고 상태값도 초기화없이 유지되는게 맞나요? 테스트해 보았는데 그렇게 처리되는 것처럼 보여서요. 긴글 읽어주셔사 감사합니다.

  • flutter
  • 하이브리드-앱
etax 댓글 1 좋아요 0 조회수 431

CRUD에 따른 ResponseDto를 보내는 유형 및 ResponseDto 구성 방식에 대한 질문

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

안녕하십니까 영한님. 영한님 덕분에 JAVA Spring 기반 백엔드 개발의 시작을 할 수 있었고, 이제는 5개월 차 스타트업 백엔드 개발자로써 커리어를 시작하게 되었습니다. 현업에 와서는 오히려 취준생 때 보다 더 많은 고민을 하게 되느데요, 질문 1. 그중 최근에 CRUD의 각 상황별 API 응답을 어떻게 보내는게 적절할지, 질문 2. 그리고 ResponseDto를 어떻게 구성하는것이 적절할지에 대한 고민을 팀장님과 함께 하고있어서, 영한님의 생각을 여쭙고자 질문글을 올리게 되었습니다. 답변 해주시면 정말 감사할 거 같습니다! Q1. 생성, 조회 , 수정, 삭제 API의 응답을 각각 어떻게 보내시는지 여쭤보고 싶습니다. 가장 먼저 조회의 경우는 말 그대로 path의 Entity 및 관련된 Entity 정보를 조합하여 응답 DTO로 변환하여 보내고 있습니다. 그런데 나머지 Write Operation에 대한 응답을 어디까지 보내야 하냐가 이슈 입니다. 예를들면 엔티티의 생성의 경우 엔티티의 응답 DTO를 보내면 - 프론트에서 별도의 조회 API 호출 없이 바로 프론트가 화면에 뿌려줄 수 있으니깐 저는 생성의 경우에도 조회와 마찬가지로 Entity의 정보를 조합하여 응답 DTO로 변환하여 보내고 있었습니다. 그런데 이러한 부분이 Command Query Sperate 원칙에 어긋나는것 같아, 영한님께서는 혹시 생성한 Entity의 Key만 보내시는지, 아니면 Entity의 정보를 DTO로 변환하여 보내시는지 궁금합니다. 만약 Entity의 Id만 보내신다면 이후에 별도로 조회API를 호출해야 하고 그 또한 비용일텐데 이러한 부분은 어떻게 하시는지 여쭤보고 싶습니다. 이제 수정 API인데요, 제가 다룬 비즈니스 로직의 경우 수정 비즈니스 로직이 다양하고 , 각 비즈니스 로직의 경우 다뤄지는 Entity의 종류가 다른 경우였습니다. (중심 Entity는 동일하지만, 연관된 Entity를 누구까지 건드리냐의 차이) 그래서 하나의 통일된 응답으로 보내기 모호한 점이 첫 번째 이유이고, 애초에 수정 후에 프론트 화면에서 그 엔티티의 정보를 보여줄 필요가 없어서 라는 두번째 이유에 의해서 에초에 엔티티의 Id값도 보내지 않고 있었는데요, 이 수정 API의 응답을 영한님은 어떻게 진행하지는지 그 이유가 궁금합니다. 마지막으로 삭제의 경우는 정말, 프론트에게 보낼 응답이 없어도 되는 경우 라고 생각했는데요, 팀장님의 의견은 만약에 나중에 삭제한 Entity를 복구하는 요구사항이 추가되는것을 고려하여 Id 정도는 넘기자는 의견을 내어주셨습니다. 마찬가지로 삭제의 경우도 어떤식으로 수행하시는지 그 이유가 궁금합니다. Q3. 마지막으로 Entity의 ResponseDto의 필드를 어떤식으로 구성하시는지 궁금합니다 예를들면 저의 경우는 API는 프론트와 서버 간의 스펙이라고 생각하고, Entity의 단건조회의 경우는 단건 조회용 ResponseDto를, 전체조회의 경우는 전체 조회용 SummaryResponseDto를 별도로 만들어서 사용하고 있었습니다. 저희 팀장님 께서는 프론트쪽도 일을 해오시다가 , 백엔드쪽 분야로 전향하신 케이스 인데요, 그렇다 보니 어떻게 해야 프론트의 생산성이 올라가는지를 고려하시는 분이셨고, 팀장님의 생각은 서버에서 넘겨주는 응답에 일관성이 있어야 그 응답을 사용하는 프론트 측도 학습이 되고 놓치는 부분 없이 생산성이 올라간다 는 의견이셨습니다. 그래서 Entity별로 당장 사용하지 않더라도 가능한 모든 필드를 담은 ResponseDto를 하나만 만들고, 해당 ResponseEntity의 조합으로 각 API별 응답 Dto를 만들어서 사용하면 , 프론트 측 에서는 일관성 있는 응답값을 사용할 수 있다는 의견이셨습니다. 물론 이 방법이 네트워크 패킷의 양을 쓸데없이 증가시킨다는 것을 알고 계시면서도, 생산성에 큰 영향을 미치는 부분이라고 생각하셨습니다. 예를들어 다음과 같이 각 Entity의 응답 Dto의 조합별로 API의 ResponseDto를 만들 수 있습니다. ResponseDto{ UserDto{ id : 1, name : “aaa” … // User엔티티의 거의 모든 필드 } ItemDto{ id : 2, name : “bbb”, … // Item엔티티의 거의 모든 필드 } } 저는 이러한 부분에 대해 생각해 본 적이 없이, 그냥 제가 “해당 API를 호출하는 화면에서 필요한 정보들만을 담아 (혹은 여러 화면에서 쓰인다면 여러개를 고려) ResponseDto를 각각 만들어서” 넘겼는데요 영한님께서는 이러한 ResponseDto를 구성하는 부분에 있어서 상황별로 필드를 재구성 하여 ResponseDto를 정의하여 사용하시는 편 인지 (SummaryResponseDto 등의 별도 Dto에 사용될 Entity의 필드들을 풀어서 정의하시는지) 아니면 생산성을 고려하여 각 Entity별 Dto를 만들고, 이들을 조합하여 ReponseDto를 정의하시는 편 이신지 , 혹은 다른 규칙이 있으신지 궁금합니다. 물론 그렇다고 , 팀장님의 의견에서 전체조회시 사용하는 DTO와 단건조회시 사용하는 DTO가 동일하더라도, 전체조회 후 단건조회를 할때 단건조회 API를 호출하지 말고 기존 Front가 가지고 있는 값을 쓰지는 말자는 의견 이십니다 (단건조회API는 별도로 호출해야 한다) 그저 핵심은 프론트가 다루는 ResponseDto의 일관성을 위해서 입니다 (결론은 생산성을 위해) 긴글 읽어주셔서 감사합니다. 항상 건강하셨으면 좋겠고, 다음 강의들도 손꼽아 기다리고 있습니다!

  • java
  • spring
  • spring-boot
  • jpa
요니 댓글 3 좋아요 0 조회수 1440

안스에 location custom

미해결

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

지도 강의에 features-custom location 가서 경도 위도 바꾸는 게 있는데 안스에서는 이런걸 찾을 수 가 없네요. 아래와 같이 이유를 얘기하는데 저는 해당되는게 하나도 없고 File > Settings 에서 Appearance & Behavior > System Settings 가봐도 location 이 없네요ㅜ 안드로이드 스튜디오의 버전이 너무 낮습니다. 안드로이드 스튜디오를 설치할 때 Location 옵션이 비활성화되어 있습니다. 안드로이드 스튜디오의 위치 서비스가 비활성화되어 있습니다. 안드로이드 스튜디오의 설정에서 Location 옵션이 숨겨져 있습니다.

  • flutter
  • 클론코딩
박정인 댓글 1 좋아요 0 조회수 254

탭 간 상태 유지 관련 하여 문의 드립니다.

미해결

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

홈 리스트 화면 중간 정도 보다가 음식 탭으로 이동 해서 리스트 스크롤 후에 다시 홈 화면으로 탭 하면 홈 리스트가 처음 부터 보여 집니다. 음식 탭으로 이동 해도 처음부터 보여지는데 상태 유지 할 수 있는 방법에는 어떤게 있는지 궁금 해서 문의 드립니다. 현재 Go router 강의 중간 정도 진행했습니다. 감사합니다.

  • flutter
  • 하이브리드-앱
tech 댓글 1 좋아요 0 조회수 444

NavigatorObserver

미해결

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

[에러코드] Error (Xcode): ../../../.pub-cache/hosted/pub.dev/go_router-4.5.1/lib/src/router.dart:38:44: Error: The class 'NavigatorObserver' can't be used as a mixin because it isn't a mixin class nor a mixin. Could not build the application for the simulator. Error launching application on iPhone 15 Pro. [강의] 섹션 15 GoRouter 프로젝트에 적용하기 Authentication 마무리하기 수강 완료 후 위와 같은 에러가 발생하는데... 어떻게 하면 해결 가능할지... 문의드립니다.

  • flutter
  • 하이브리드-앱
Bullets 댓글 1 좋아요 0 조회수 407

파이어베이스 설정중 안드로이드스튜디오 프로젝트 에러

미해결

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

정말 죄송하지만 파이어베이스 관련에러인데요 코팩 책을 보면서 파이어베이스 설정을 하다가 Flutterfire configure 부터 오피셜 파어베이스가 필요하다는 에러만 뜨더라고요 구글링 해보니 적용하려는 안스 프로젝트의 폴더에 파베 파일을 넣어보라길래(기존 작업중이던 프로젝트) 그대로 했더니 파베도 설정 안되고 멀쩡하던 안스 프로젝트까지 아래와 같이 에러가 났습니다. * What went wrong: A problem occurred configuring project ':cloud_firestore'. > defaultConfig contains custom BuildConfig fields, but the feature is disabled. To enable the feature, add the following to your module-level build.gradle: `android.buildFeatures.buildConfig true` 일단 해당 파베를 지웠다가 아예 다른 d드라이브에 다시 깔아봤지만 동일하고.. 그래들 프로퍼티 파일에 아래를 추가도 했고요 android.buildFeatures.buildConfig=true 어떻게도 위 에러가 없어지질 않네요ㅜ 위 에러메시지는 어떤 부분을 봐야하는지 방향성만이라도 알려주시면 감사하겠습니다.

  • flutter
  • 클론코딩
박정인 댓글 1 좋아요 0 조회수 389

강의 내용으로 블로그를 작성해도 될까요?

미해결

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

강의를 보고 배운내용을 오래 기억하기 위해 인용하여 블로그를 작성해도 될까요? 핵심이라고 생각되는 소스코드를 복사하거나 가끔 이론설명 하실때 사용하시는 ppt 페이지(그림) 일부분 이런걸 복사한 뒤, 저의 생각과 함께 글을 작성해보려고 하는데 가능할까요? medium 블로그를 통해 출처와 같이 작성할 것 같습니다.

  • flutter
  • 클론코딩
댓글 1 좋아요 0 조회수 426

flutter doctor cocoapods 설치 오류

미해결

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

intel mac 유저입니다. 강의에서 말씀하신대로 homebrew 통해서 cocoapods 설치 한 후 flutter doctor 실행 하는데 계속 저런 화면이 뜨네요... 해결해 보려고 sudo gem install cocoapods 실행하면 이런 화면이 뜨구요... 해결 방법 알려 주시면 감사하겠습니다....ㅠㅠㅠ

  • flutter
  • 클론코딩
  • cocoapods
JONGMIN CHA (Howoo's papa) 댓글 1 좋아요 0 조회수 613

자동 재생에 대해 궁금한 점이 있습니다.

해결됨

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

좋은 강의 감사합니다. 강의 내용을 듣다보니, 동영상을 실행하면 자동 재생 기능이 따로 없는걸로 보여서 공식 문서를 참조 한 뒤 아래와 같은 기능 한 줄을 추가 했습니다. initializeController() async { currentPosition = Duration(); videoPlayerController = VideoPlayerController.file( File(widget.video.path), ); await videoPlayerController!.initialize(); await videoPlayerController!.play(); // 자동 재생 시작 videoPlayerController!.addListener(() async { final currentPosition = videoPlayerController!.value.position; setState(() { this.currentPosition = currentPosition; }); }); setState(() {}); } 이런식으로 await videoPlayerController!.initialize(); 밑에 추가를 했는데, 테스트는 해보니 이상이 없어서 혹시 코드 내부 로직상으로도 문제가 없는지 궁금합니다.

  • flutter
  • 클론코딩
MinwooNa 댓글 1 좋아요 0 조회수 1250

리스너 dispose 질문입니다

미해결

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

5분 15초 쯤에 ScrollController 의 리스너 dispose하고 ScrollController 도 dispose 하시는데 질문이 3가지 있습니다. 둘 중 하나라도 dispose를 안 하면 어떻게 되는 건가요? RestaurantScreen, DetailScreen 에서는 dispose를 안 했는데 여기에서 한 이유가 있을까요? 모든 리스너들은 다 dispose를 해줘야 하는지입니다.

  • flutter
  • 하이브리드-앱
김상호 댓글 1 좋아요 0 조회수 383

아래 댓글에 답변 드립니다.

해결됨

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

계속 질문드려 죄송합니다. 그리고 매번 답변 주셔서 진심으로 감사드립니다. 제가 위탁하여 가지고있는 2년 전 flutter와 firebase로 제작한 앱이 있습니다. 그런데 지금 제가 공부중이라 안드로이드 스튜디오로 열려고 하니 다양한 이유로 에뮬레이터에 구현이 안되더라고요, 일부 코드들은 지금은 안쓰는 것 같고, 코드 수정은 어찌어찌 제가 할 수 있을 것 같은데, 새플러터 프로젝트로 코드 복사하고, 야믈파일, 안드로이드, ios 일부 수정해야하는 파일을 복사해와도 실행이 안되는건 마찬가지였습니다. 이런때는 어떻게 해야할까요?; 해당 개발자에게 문의를 해봐도 안드로이드 환경설정은 어떻게 해줄 수가 없다고 하더라고요, 원본 파일에서 최대한 아무것도 바꾸지 않는게 좋다고 하는데, 열 수가 없습니다.

  • flutter
  • 하이브리드-앱
김지현 댓글 1 좋아요 0 조회수 255

지도위에 이동 경로 스리기

미해결

Flutter 초입문 왕초보편

지도위에 이동경로 그리는 부분에서 새로운 경로가 그려지고 조금 있으면 경로가 지워 집니다. 이렇게 동작하는 것이 정상인가요? 설명 중에는 그런 내용에 없어 문의 드립니다.

  • flutter
  • ios
  • android
  • dart
빛나는 댓글 1 좋아요 0 조회수 654

섹션10. 상태를 트리의 위로! 강의 관련질문

미해결

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

Onheartpressed()함수를 만들었는데 onpressed: 파라미터 뒤에 onheartpressed()라고 ()를 붙여야하는거 아닌가요? 함수니까 말이에요. 근데 왜 onheartpressed라고 () 없이 쓸 수가 있는거죠?

  • flutter
  • 클론코딩
강원빈 댓글 2 좋아요 0 조회수 364

Android Studio Devices 실행 시간

미해결

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

컴퓨터 사양마다 로딩이나 리붓되는 시간이 다르겠지만, 최신 버젼으로 Device를 실행하면 엄청 오랜 시간이 걸린 후에야 작성한 코드가 실행되는데, 이건 어쩔 수 없이 당연한 컴퓨터 사양 문제겠죠?....ㅠㅠ

  • flutter
  • 클론코딩
hiravip 댓글 1 좋아요 0 조회수 281

(랜덤숫자) backgroundColor: PRIMARY_COLOR 오류

미해결

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

color.dart에 import 'package:flutter/material.dart'; const Color PRIMARY_COLOR = Color(0xFF2D2D33); const Color RED_COLOR = Color(0xFFEA4955); const Color BLUE_COLOR = Color(0xFF549FBF); 한 뒤에 return Scaffold( backgroundColor: PRIMARY_COLOR, body: SafeArea( 라고 backgroundColor: PRIMARY_COLOR, 넣자마자 오류가 납니다.. 자동완성도 당연히 안되고요. 아무리 봐도 똑같이 했는데 이유를 모르겠어서요ㅜ Performing hot restart... Syncing files to device SM G991N... lib/screen/home_screen.dart:14:24: Error: The getter 'PRIMARY_COLOR' isn't defined for the class '_HomeScreenState'. - '_HomeScreenState' is from 'package:random_number/screen/home_screen.dart' ('lib/screen/home_screen.dart'). Try correcting the name to the name of an existing getter, or defining a getter or field named 'PRIMARY_COLOR'. backgroundColor: PRIMARY_COLOR, ^^^^^^^^^^^^^ Restarted application in 561ms.

  • flutter
  • 클론코딩
박정인 댓글 2 좋아요 0 조회수 451

webview 버젼 관련

미해결

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

webview 강의와 관련하여 , 버젼 ^3.0.2로 진행한 후 4.x.x으로 따라가도 무관하다는 글을 보았습니다. 하지만 그대로 3버젼으로 진행하려고 하니 더 이상 지원하지 않는 api라며 안내가 뜨고 있습니다. 그러곤 4버젼에서 다시금 하려 해도 3버젼과 명령이가 달라져 앞 강의 내용을 들어도 이해가 잘 안가는 부분들이 있습니다. 4버젼만 따로 강의 제작은 진행되지 않는걸까요?

  • flutter
  • 클론코딩
hiravip 댓글 1 좋아요 0 조회수 206

jpql 엔티티 인지 오류

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 일단은 해결 했습니다. findAllString 이용하는데 Order를 얘가 모르는 거 같아서.. String jpql = "select o From jpabook.jpashop.domain.Order o join o.member m"; 이렇게 패키지경로까지 다 명시해줬더니 인지를 하더라구요.. 안 그러면 org.hibernate.query.sqm.UnknownEntityException: Could not resolve root entity 'Order' at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitRootEntity(SemanticQueryBuilder.java:1960) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final] at org.hibernate.query.hql.internal.SemanticQueryBuilder.visitRootEntity(SemanticQueryBuilder.java:253) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final] ............... 얘가 이렇게 Order 인지 못한다고 오류가 뜹니다.. 원래 엔티티는 그냥 @Entity 등록 하면 알아서 인지 되는걸로 알고 있었는데.. 왜 이런 걸까요? package jpabook.jpashop.domain; import jakarta.persistence.*; import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @Entity(name = "orders") @Getter @NoArgsConstructor(access = AccessLevel.PUBLIC) public class Order { @Id @GeneratedValue @Column(name = "order_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "member_id") private Member member; @OneToMany(mappedBy = "order", cascade = CascadeType.ALL) private List<OrderItem> orderItems = new ArrayList<>(); @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @JoinColumn(name = "delivery_id") private Delivery delivery; private LocalDateTime orderDate; @Enumerated(EnumType.STRING) private OrderStatus status; public void changeMember(Member member){ this.member = member; member.getOrders().add(this); } public void addOrderItem(OrderItem orderItem){ orderItems.add(orderItem); orderItem.setOrder(this); } private void setOrderDate(LocalDateTime orderDate) { this.orderDate = orderDate; } public void changeDelivery(Delivery delivery){ this.delivery = delivery; delivery.setOrder(this); } private void setStatus(OrderStatus status) { this.status = status; } public static Order createOrder(Member member, Delivery delivery, OrderItem... orderItems){ Order order = new Order(); order.changeMember(member); order.changeDelivery(delivery); for (OrderItem orderItem : orderItems) { order.addOrderItem(orderItem); } order.setStatus(OrderStatus.ORDER); order.setOrderDate(LocalDateTime.now()); return order; } public void cancel(){ if(delivery.getStatus() == DeliveryStatus.COMP){ throw new IllegalStateException("이미 배송완료된 상품은 취소가 불가능합니다."); } this.setStatus(OrderStatus.CANCEL); for (OrderItem orderItem : orderItems) { // orderItem.getItem().removeStock(orderItem.getCount()); orderItem.cancel(); } } public int getTotalPrice(){ int totalPrice = 0; for( OrderItem orderItem : orderItems){ totalPrice += orderItem.getTotalPrice(); } return totalPrice; } }

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
궁금이 댓글 1 좋아요 0 조회수 2889

5장 파이어베이스 연결이 잘 안됩니다.

해결됨

Flutter 앱 개발 기초

마지막으로 파이어베이스 마지막장 공부 하고 있는데요. 이번에 바뀐건지 또 연결이 안되고 있어요 . . 참고할 만한 사이트나 . 연결방법좀 귀뜸해주세요 . classpath "com.google.gms.google-services" version "4.4.0" 지워도 안되요 , 그리고 IOS 는 POD 자체가 안보입니다. // notion 감사합니다 . 저도 저장해야할 것 같습니다. 머리가 안따라주네요 . 이제 절반정도는 만들 수 있어요. * What went wrong: [ ] A problem occurred evaluating root project 'android'. [ ] > Supplied String module notation 'com.google.gms.google-services' is invalid. Example notations: 'org.gradle:gradle-core:2.2', 'org.mockito:mockito-core:1.9.5:javadoc'. [ ] * Try: [ ] > Run with --debug option to get more log output. [ ] > Run with --scan to get full insights.

  • flutter
what? just run 댓글 1 좋아요 1 조회수 451

인기 태그

인프런 TOP Writers

주간 인기글