최대한 많은 사람들이 쓸 수 있도록 접근성, 국제화
플러터는 기본적으로 flutter_localizations, intl 제공
+easy_localization
근데 위는 json으로 관리해야해서 번거로움.
sheet_loader_localization으로 google sheet로 관리 가능
extension IntExt on int {
String toComma() {
return decimalFormat.format(this)
}
String toWon() {
return "${toComma()}원"
}
}
위와 같이 int에 메소드를 만들 수 있음.
import 안에 익스텐션을 hide라는 키워드로 숨길 수도 있음.
import "얄라얄라" hide IntExt; 이런식으로
riverpod에는
final link = keepAlive();
Timer(duration, () {
link.cllose();
})
로 어떤 화면에서 데이터가 캐싱되도록도 만들 수 있는데 캐싱도 익스텐션을 이용해서 재활용해주는 모습 보여주심. 훨씬 더 깔끔해보임.
mixin의 유래 > 1970년대 Howard Cannon이라는 사람이 steve's ice cream이라는 가게에서 영감을 얻었다고함. 그 가게에서는 아이스크림에 요아정처럼 여러 토핑을 추가했던 것을 mix-in이라고 말했다고함.
mixin을 사용할 때 변수와, 함수명이 겹쳤을 때 override로 문제 생기는 경우가 있으니 변수,함수 앞에 반드시 _를 붙여서 private 처리 해주기.
그냥 mixin의 함수명,변수명이 겹치지 않도록 하는게 가장 베스트일듯.
플러터를 썼었을 때 late를 별 생각 없이 썼었는데 객체를 사용안할 때는 생성하지않고, 사용할 때만 생성하게 해준다. late가 없으면 거의 6줄을 써야되는데 이런건줄 몰랐다.
알수록 너무 어렵군
open, close 원칙.. 음.. .... .. . .. .. . . .. . . .. .
다크모드 뿐만 아니라 여러 색으로 커스터마이징하시네...
stateless widget처럼 템플릿화할 수 있다.
Android Studio > settings > 검색 창에 live template
앱으로 만들어질 때 dependencies 하위의 파일들만 컴파일된다.
dev_dependencies는 개발자가 개발하는데 앱을 쉽게 만들 수 있게 도와주는 앱들임.
빌드 타임 개선..
freezed generate_for을 사용했더니 1:52 > 58 초로 줄여졌더라...
여기에 mockito:mockBuilder 까지 사용했더니 58 > 20 초까지 줄여졌더라..
함수부와 화면부를 나중가니까 나눠주고 mixin으로 빼줌
특정 패키지에서 문제가 생길 때.
와.. git clone 받아서 문제 부위 고쳐서 깃에 다시 올리고 pubspec.yaml에 git url을 등록할 수도 있구나... 쩐다..
안에 package 폴더를 두고 라이브러리화도 가능.
플러터를 모르니까 뭔 소리인지 하나도 모르겠네요 ㅋㅋㅋㅋ
잘 보고 갑니다~