•
DTO를 화면에 맞게 가공해서 쓰는 것이 모델이다.
•
화면에 필요한 필드가 모델이다.
•
다트 에서 오브젝트로 받는 것이 레파지 토리의 책임.
•
레파지토리에 요청하면 리턴이 안된다????????????
◦
그래서 viewmodel에 요청해야된다???????????
상태데이터
창고
창고관리
MVVM 패턴이란
각 페이지 마다 viewmodel를 가지는 구조
Dio에서 기본 설정을 할 수 있다.
에뮬레이터는 새로운 가상 네트워크를 가지고 있기 때문에, 로컬 호스트가 안된다.
내 진짜 아이피를 넣어야된다.
휴대폰 내부 저장소 클래스 이름
여기에 JWT을 담는다.
사용하기 위해서는 이 두가지의 의존성이 필요하다.
회사가서 우리 코드 파악해 할때 해야되는 것은? 컨벤션과 폴더구조 파악!!!
const를 사용하는 이유???
완전 똑같은 디자인인 divider가 필요할 때 매번 새로 생성하면 메모리 낭비가 있을 수 있으므로, 같은 디자인이라면 const를 붙여서 메모리에 한 번 띄워진 Divider를 가져다 쓸수 있다.
싱글톤 패턴을 유지할 수 있다.
만약 에뮬레이터 용량을 초과했다는 에러 메시지를 받으면???
wipedata로 내부 파일들을 삭제하고 다시 할 수 있다.
자동로그인
자동 로그인은 jwt가 secureStrage에 저장되어 있으면, 자동으로 던져줘서 검증하고 로그인
스플래시 스크린 테스트?
앱이 로딩 될때, 응답받는 딜레이 과정을 통신 없이 구현한 것
플러터 유효성 검사 코드
플러터 가입시 빈공간을 날려주는 코드 trim
DTO 폴더 구조
일반 Provider는 상태를 바꿀수 있지만, 화면을 다시 그리지 않는다. 모든 전역에 쓰는 데이터는 화면에 귀속되지 않는다. 세션같은거, 접근할려면 ref만 있으면 되고 ref에 접근할려면 consumer 위젯을 사용하면 된다.
•
화면에 쓰는 것은 StateNotifierProvider로 사용하면 되는데, 이건 그림을 다시 그린다.
전역 데이터를 저장하는 저장소가 필요할 수 있다. store
그래서 Provider로 상태가 바뀌는 데이터를 여기에 저장하면 된다.
이렇게 사용하면 전역 데이터를 저장할 수 있다.
서버 요청 하는 법
dio.post 그리고 url 주소 그리고 data
서버에서 응답받은 Map을 DTO로 받는 방법
response.data는 바디데이터를 가져오는 문법
다이나믹으로 받으면 그대로 쓰지 못하기 때문에, 바디데이터의 user객체를 받아줄 객체가 필요하다.
응답 데이터를 받아서 fromJson으로 유저 객체에 담아서 DTO의 바디 데이터로 잡았다.
view에서 입력을 받아서 store까지만 던져 주면 된다.
모든 컨텍스트를 알고 있는 navigatorKey!!
메서드를 호출한 곳의 컨텍스트를 알고 있다.
세션으로 세션유저를 사용할려면?
그냥 이대로라면 매번 new하기 때문에 같은 객체가 중복되어 생성이 된다.
Provider로 저장을 하게 되면, 메모리에 딱 ! 떠있게 되고 중복되서 생성되지 않고, 어디서든 ref로 꺼내 쓸수 있다.
그래서 Provider를 사용하게 되면, sessionStore를 provider를 사용해서 read를 해서 join을 때리면 된다.
Provider를 사용할려면 MyApp에 ProviderScope를 걸어야 된다.
Dio, BaseOptions. 200이 아니어도 예외 발생안하게 설정
Dio객체 안에
validateStatus설정으로 200이 아니어도, 예외가 발생안하게 설정할 수 잇다.
로그인
인증 관련된것은 뭐든 sessionstore에서 처리
ConsumeWidget은 모든 Provider에 접근이 가능하다.
응답처리 비즈니스
구조 분해 할당
껏다 켜지는 상황이 발생할 때는 하드디스크에 저장
secureStrorage가 제공하는 기능, 자동 로그인시에 사용된다.