![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/RUufd/btrHn1QBGsP/ZkBRkXZ1EOaBSxT9pwFQG0/img.png)
앱에서 저장할 수 있는 공간은 두가지로 나뉜다. internal storage와 external storage. internal storage는 해당 앱만 접근할 수 있는 저장 공간이다. 따라서 컴퓨터에 장치를 연결하고 파일 탐색기로 들어가보아도 이 공간에는 접속 할 수 없다. external storage는 해당 앱 뿐만아니라 다른 앱 또는 외부에서 접근이 가능한 공간이다. 즉, 파일 탐색기로 확인이 가능하다. 내가 원하는 것은 external storage에 저장하여 파일 탐색기를 통해 파일을 들여다 보거나, 가져올 수 있는 것이다. 조금 더 추가하면 모바일폰이나 태블릿을 컴퓨터에 연결 했을 때, 아래와 같은 폴더 중 한 곳에다가 앱에서 생성한 파일을 저장 하는 것이다. 플러터에서 external s..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/JQ0rD/btrGzPEhEG7/wpR3noacUpwPYOlRal9ocK/img.png)
Text 위젯에서는 표시할 text의 fonSIze 설정할 수 있다. 이때 Text위젯을 감싸는 위젯의 높이(height)가 지정되어있지 않을때 자신의 child, 지금의 경우 Text 위젯의 크기를 따르게 된다. 만약 Text 위젯도 높이(height)가 정해져 있지 않을 경우 Text Widget은 표시할 text의 크기에 비례해서 커지게 된다. 이에 따라 Text위젯을 감싸는 위젯(내 경우 SizedBox)도 크기가 따라 커지게 된다. 위와 같이 간단한 코드를 통해 테스트 해보자. fontSize 값은 코드에서처럼 100을 넣었다. 한글은 '한뀰' 영어는 'Rg' 를 입력했다. SizedBox의 height는 아래 사진과 같이 Flutter Dev tool의 Flutter Inspector를 이용해..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bhh3WV/btrFBJRvkbX/5YCOJNSz430wpEmUK2o52k/img.png)
앱을 제작하다보니 앱의 현재 화면이나 화면의 일부 위젯을 이미지로 저장하기 필요한 패키지는 아래와 같다. # 특정 위젯 screenshot 을 위한 패키지 screenshot: ^1.2.3 path_provider: ^2.0.11 permission_handler: ^9.2.0 image_gallery_saver: ^1.7.1 share_plus: ^4.0.9 screenshot 패키지는 flutter에서 원하는 widget tree 혹은 전체 UI를 캡쳐 할 수 있다. 이때 캡쳐한 이미지를 저장하기 위해서 path_provider 패키지를 이용해서 저장할 directory를 쉽게 받아올 수 있다. permission_handler 는 이미지 저장시, 현재 프로젝트에 할당된 디렉토리 이외의 곳에 저장하려..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cyOxVd/btrDefTLEw9/S1wJQxpCTXF6v9ngvrfiK0/img.png)
패턴책을 볼때 알게된 Singletone. 플러터를 이용해 Bluetooth를 연결하기 위해서 코딩하는 중에 마주쳤다. 현재 Bluetooth를 사용하기 위한 라이브러리로 flutter_blue_plus를 사용하고 있는데 여기서 클래스 정의 내부를 보면 아래와 같이 singletone 이다. 핸드폰에 Bluetooth 모듈이 하나가 있기 때문에, 하나의 instance 만 가지고 있어야 해서 그렇다. 비슷한 방식으로 아래처럼 get 대신에 factory를 이용할 수 도 있다. 결과를 보면 singletone 프린트문은 한번만 실행됬고, a 와 b는 같은 클래스 인스턴스를 가지고 있는 것을 볼 수 있다.
현재 만들고 있는 앱은 Bluetooth를 이용해서 근전도 측정 장치와 통신을 한다. 앱을 Flutter로 제작하고 있기 때문에 Bluetooth와 연결을 위한 라이브러리를 써야한다. 장치와 통신하는 방식은 정확하게 말하면 Bluetooth low energy (BLE)이다. Bluetooth classic과는 다른 메커니즘을 사용하고 있다. BLE를 위한 Flutter 라이브러리를 Pub.dev에서 찾아보면 3개이상이 있는 것을 확인 할 수 있다. 이 중에서 활발히 업데이트되고 있는 라이브러리가 2개이다. 하나는 필립스 휴에서 조명(LED)을 컨트롤하기위해 제작한 flutter_reactive_ble 이고, 다른 하나는 flutter_blue_plus 이다. flutter_blue_plus는 이전에 많..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/byIRMh/btrA4RODbrP/ity045mb3eTLwFfXiSN3w0/img.png)
버튼을 클릭하면, 15초 후에 사라지는 dialog를 생성하고 싶었다. 그래서 dialog의 initState()에 Timer.periodic 을 실행하도록 하고, 이 타이머에서 15초가 되면 callback하는 함수에서 창을 닫는 (아래 코드처럼)명령을 주었다. 그랬더니 context 빨간 줄이 생기면서, initState에서 context를 사용할 수 없다는 설명이 떴다. 'initState context'를 검색해보니 context는 initState 이후에 사용할 수 있다고 한다. 그래서 해결 방법을 보니 아래 링크처럼 Future.delayed를 사용하면 된다고 한다. 그래서 따라 해보았다. https://stackoverflow.com/questions/49457717/flutter-get-c..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bqm0ik/btrzRrQsJfa/NbzDiOgOBsvcsxLS7bL3w0/img.png)
Sql DB에 자료를 저장하려면 아래와 같은 타입들이 가능하다. (자료링크) 그런데 저장해야할 자료 type중에 array나 list가 있다면? 그 data를 db에 저장 가능한 타입으로 변환해서 저장을 해야한다. 보통은 String으로 저장하는게 편하다. string에 다양한 메소드들이 이미 구현 되어있어서 다른 타입에서 string으로 변환하거나 string에 포함되어있는 separator를 기준으로 내용들을 array으로 변환하기 쉽기 때문이다. 아래의 예는 List 형태의 데이터를 sql DB에 저장할 수 있도록 string으로 변환하는 코드(dart언어)와 , DB의 string 데이터(list을 string으로 만들어 저장해두었던..)를 다시 List 로 변환하는 코드이다. static Str..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/NM1A4/btrxHZ3NUrm/0uF0Dal2TP0AN669vheK6k/img.png)
Size 를 입력할 때 보면, SIze(10, 10) 이렇게 단위 없이 숫자를 입력한다. 이때 10이 픽셀로 얼마정도의 크기인지 가늠이 되지 않아 구글링을 했다. 답은 아래와 같다. 장치마다 pixelRatio가 있으며 이 값을 곱한 값이 pixel값이라는 것이다. 참고 자료 https://stackoverflow.com/questions/50596099/what-is-unit-of-measurement-in-flutter What is unit of measurement in flutter as usual, we use dp for Android and pt(point) for ios as a unit of measurement. 1 pt = 1/72 inch 1 dp = 1/160 inch But i..
- Total
- Today
- Yesterday
- Bluetooth
- plugin
- 다트
- firebase
- 앱 프로그래밍
- TextField
- 크롬
- 에러
- DART
- UX
- position
- Flutter
- 디자인
- SizedBox
- 플러터
- UI
- Chrome
- 앱
- Syncfusion
- hide
- TextFormField
- 이미지
- error
- 인사이트
- 문제 해결
- BLE
- addPostFrameCallback
- 앱개발
- IOS
- 한빛미디어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |