Flutter 사용 정리

OSX, Windows, Linux, Web에서 사용하기 위해서는 각 기능을 켜줘야함.

Flutter로 데스크톱 애플리케이션 개발 시작하기

일회성 구성 변경으로 데스크톱 지원을 구성해야합니다.
$ flutter config –enable-windows-desktop # for the Windows runner
$ flutter config –enable-macos-desktop   # for the macOS runner
$ flutter config –enable-linux-desktop   # for the Linux runner

데스크톱 용 Flutter가 활성화되었는지 확인하려면 다음 명령을 실행하십시오.
$ flutter devices

프로젝트 생성 (아래 명령) 하면 사용가능한 Devices에 대응하는 모든 코드가 같이 생긴다. ( 프로젝트 안에 , ios, android, linux, windows, osx 등 )
$flutter create 프로젝트명 # 단어간의 연결은 “_”로 처리 Camel 안됨

flutter 2.0으로 변경 되면서 null safe가 기본화 됨 따라서 null safe적용이 안된 프로젝트는 하기의 명령으로 마이그레이션 필요
$ dart migrate –apply-changes

** pubspec.yaml에 하기 내용 지정 하면 null safety 넣을 수도 뺄 수도 있음.

environment:
  sdk: '>=2.12.0-0.0 <3.0.0' ( 2.12 버전 부터 null safety적용됨 )



** pub.dev에 있는 plug-in들이 2.0대응이 안되어 있는 경우 문제가 발생될 수 있음 이럴때는 아래의 옵션으로 회피 할 수 있으나 바람직 하지는 않다..
$ flutter run --no-sound-null-safety 

** Android 를 play store에 배포 할떄 앱번들 형태로 배포해야 하는데 아래의 명령으로 생성 하면 된다.
$ flutter build appbundle –target-platform android-arm,android-arm64,android-x64

이건 abi형태로 배포 하면서 null safety 기능 끄기..
$ flutter build apk –split-per-abi –no-sound-null-safety

** json_annotaions 등 개발환경에서 code generate 해주는거 사용 할때는 하기의 명령을 실행 해놔야지 변경사항에 따른 code generate가 자동으로 된다.
$ flutter pub run build_runner watch –delete-conflicting-outputs
$ flutter pub run build_runner build –delete-conflicting-outputs # 이건 1회성..

** plug-in들의 update는
$ flutter pub upgrade

** 애뮬레이터 종류 보기
flutter emulators

** 애뮬레이터 실행 하기
flutter emulators –launch Nexus_6API_26

** dart에서 null check 방법
String value = a?.val1??”is null”;
이렇게 하면 a가 null이면.. “is null”이 저장되고 a가 null이 아니면 a.val1의 내용이 대입된다.
null safety 적용되면.. 기본적으로 모든 변수는 null이 허용안됨.. 허용 시킬려면..
데이터 타입뒤에 ?를 붙여서 명시적으로 선언해줘야 함
String? a; // 이렇게

** Apk등 최종 패키지 사이즈 줄이기. .
https://flutter.dev/docs/perf/app-size#reducing-app-size 참조

Dart 2.13이상부터의 기능으로
–split-debug-info 옵션을 써서 Compile하면.. debug정보가 삭제되어 용량이 줄어 든다.. ( Release 배포 할때 유용 )

Dart 2.13 부터는 null Safety기 기본임.. 그래서
plug-in들이 null Safety지원 된는 걸로 Update하기 위해 아래 명령 실행

dart pub outdated

Dart 2.13에서 지원한 기능
– Type Alis기능 C/C++의 #define 같은 기능인데 Class단위 까지 지원됨
– FFI changes :: C/C++에서 구조체의 Packing하는 기능
– Official하게 Docker 이미지 제공함 Web 배포 할때 유용할듯..