Search
▪️

Using Native Device Features

file을 써야한다면 import 'dart:io'를 이용한다. 이를 통해 file과 file system 이용 가능하다.
Button을 스크린 가장 밑단에 붕 뜬 느낌 없이 주고 싶다면 elevation을 0으로 주고, margin을 없애야 하므로 materialTapTargetSize를 MaterialTapTargetSize.shrinkWrap으로 준다.
Device에서 image를 사용하고 싶다면 Image.file을 이용한다.
Flutter는 Dart 언어를 쓰고 언어 특성상 Engine을 갖고 있는데, 이로 인해 내가 쓰고 있는 운영체제의 시스템에 diirect한 접근이 가능하다. 따라서 Device 기능을 가져다 쓸 수 있다. 하지만 가장 중요한 것은 이런 Device기능을 가져다 쓸 때는 Permission을 얻어야 한다는 것이다. 따라서 official docs를 보며 추가 작업이 필요함 (반드시!)
Android는 android >> app >> src >> main >>AndroidManifest.xml && android >> gradle.properties (여기서 에러가 있다면 build.gradle도 설정한다.)
iOS는 Runner >> Base.lproj >> Info.plist && Runner >> Base.lproj >> AppDelegate.swift
image_picker를 통해서 갤러리, 카메라 기능을 쉽게 쓸 수 있다.
SQLite라는 DB를 사용하기 위해서 sqlite package가 필요하다.
DB처리는 Helper을 만들어서 DB접근할 수 있게 Method 정의 필요하다. (Path를 통해 접근한다.)
Location을 처리하고 싶다면 location package를 이용한다.
Location을 직접 조정하고 싶다면 location package와 연결할 수 있는 google_maps_flutter package를 이용한다. (google map은 부모 Widget의 height, width를 추정한다.)
구글은 좌표를 던지면 주소를 주는 API도 있다. Geocoding API이용하면 된다.
constructor에 []를 쓰는 것은 값이 없을 때, 주어진 값을 초기 값으로 할당 하겠다는 의미이다.
push pop을 통해 return하는 것에 대해서 Dart는 이 부분만큼은 쉽게 Type을 추정하지 못한다. 따라서 변수 타입에 데이터 타입을 정하거나 push 타입을 지정하는 것이 옳다.
사진을 local storage에 저장하기 위해서는 <imgFile>.copy() Method를 이용한다.
android나 ios 둘 플랫폼에서 아무 위치에 저장할 수는 없다.
저장할 수 있는 위치를 구하기 위해 path_provider가 필요하다.
또한 path를 생성할 수 있는 path 패키지도 필요하다.
path로 들어가는 인자를 구하기 위해서 여러 function들이 있지만 대체로 getApplicationDocumentsDirectory()를 쓴다.
getExternalStorageDirectory()는 android 전용이다.
getTemporaryDirectory()는 운영체제에 의해 일정 시간이 지나면 clean된다.
path.basename()을 통해 separator로 부터 쉽게 파일 이름을 구할 수 있다.
Location().getLocation()은 사용자의 위치를 받아오는 함수이다. (위치 받은 좌표를 처리해야 한다.)
location 및 sqlite db 관련 코드 확인하자.
google maps static api
location url에서 center은 lat, long의 주소를 의미한다.
zoom은 zoom / size는 size / maptype은 maptype
marker추가는 여러 개 생성 가능하다.