![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/R7FsY/btszvDJT0cK/24QDsI8aAgK1Njd0PyVn7k/img.png)
구글 플레이 콘솔에서 앱 출시를 위해 테블릿용 스크린샷을 입력할 때는 그냥 테블릿 PC에서 탭쳐한 스크린샷을 입력하면 된다. 하지만 앱 스토어 커넥트에서 앱 출시를 위해 테블릿용 스크린샷은 정해진 규격이 있다. 필수 사이즈는 2048x2732 또는 2732x2048 픽셀의 PNG 또는 JPEG 이어야 한다 (JPG 확장자일 경우 에러남...확장자를 JPEG 로 변경해줘야함) 이 크기의 스크린샷을 저장해주는 것은 iPad Pro 2세대, 3세대 뿐이다. 다른 장비는 이보다 작은 사이즈의 스크린샷이 저장된다. 회사에서 사용하고 있는 iPad Pro 11(4세대) 로 스크린 샷을 찍으면 2388x1668 로 저장된다. 따라서 앱 스토어 커넥트에 요구하는 스크린샷을 업로드하기 위해서는 캡쳐한 스크린샷을 이용해서..
이제 Flutter 입문서 마지막 책이다. 지금까지 본 책중에서 내용이 가장 알차다. 그렇다고 물론 초보가 이 책 한권을 본다면 다른 책을 안봐도 되는 것은 아닌 것 같다. 최소한 Do It 정도는 더보는 것을 추천한다. 이 두권을 보더라도 실제 앱을 짤 때에는 궁금하거나 모르는 부분이 무수히 나올텐데 이때부턴 구글링이 최고다. 몰랐던 부분, 기억하고 싶은 내용 다트 네이티브 플랫폼은 JIT(Just In Time) 컴파일 방식과 AOT(Ahead of TIme)컴파일 방식을 이용한다. JIT 컴파일 방식은 다트 가상 머신에서 제공하는 기능으로 코드의 변경된 사항을 처음부터 다시 컴파일 할 필요 없이 즉시 화면에 반영할 수 있는 핫 리로딩 기능, 실시간으로 메트릭스를 확인할 수 있는 기능 디버깅 기능을 ..
main() 에서 아래의 코드를 추가하면 시스템 UI 인 status bar(top) 와 navigation bar( bottom) 이 숨겨진 채로 Full screen에 대해서 앱의 UI 가 표시된다. SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: []); 그런데 앱 실행중에 status bar, navigation bar 가 생성될 수 있는 제스쳐를 취하게 되면 숨겨두었던 system UI 가 나타나면서 UI 가 overflow 될 수 있다. 이를 감지해서 다시 system UI 를 숨겨 두기 위한 코드도 추가해 두었었다. system UI 를 감지하고 2초 후에 다시 원래 상태로 되돌리는 명령이다. SystemChrome.se..
버튼을 누르면 생성되는 팝업창의 위치를 버튼과 연관 되게 만들고 싶을 때, 버튼을 눌렀을 때 RenderBox 로 해당 버튼의 rending 관련 정보를 가져온뒤 offset 값을 화면애 대한 절대값으로 변환하여 이값을 기반하여 생성될 popup 창의 위치를 결정하는 파라미터에 넣어주면 된다. onPressed: (){ final RenderBox renderBox = context.findRenderObject() as RenderBox; final offset = renderBox.localToGlobal(Offset.zero); final left = // offset.dx 를 활용하여 popup 창의 왼쪽위 모서리 x좌표 값 계산하여 입력 final top = // offset.dy 를 활용하여 ..
TextFiled가 포커싱 되었을 때 생성되는 keyboard에 의해 가려진다면, TextField를 보이는(visible) 영역으로 가져오면(스크롤하면) 된다. 그러기 위해서는 우선 TextFiled가 scroll 가능한 widget에 쌓여져 있어야 한다. 보통 SingleChildScorllView를 이용해서 감싸고 child 에는 Column 을 이용해서, 표시하고자 하는 위젯들을 나열한다. 이 중에 TextForm filed 가 있을 것이다. 이제 keyboard가 생성되어었을때 스크롤을 얼마나 해야하는지 알아와야 한다. soft keyboard 는 system UI 이다. System UI에 의해 가려지는 크기를 받아오는 코드는 아래와 같다. MediaQuery.of(context).viewIn..
앞서본 3권의 책보다 이 책이 나에게는 더 도움이 되었다. 네가 잘 모르는 부분에 대한 내용을 포함하고 있었기 때문인데, 네이티브 API와 통신하기, 파이어베이스 애널리틱스, 푸시알림, 광고 넣기에 관한 내용이다. 사실 모바일 앱을 만든다고 하면 대부분 생각하는 아이디어들은 외부에 서버나 DB가 있어서 통신을 하며 데이터를 주고 받고, 그것을 프로세싱하여 화면에 보여주는 것들 일 텐데 이부분에 대한 내용이 대른 책들보다 많은 분량으로 설명하고 있고 여러 한가지가 아니라 3~4가지 케이스로 다르고 있어 이해하기에 도움이 되었다. jsonDecode() 함수는 JSON 형태의 데이터를 dynamic 형식의 리스트로 변환해서 반환해 준다. createState() 함수가 호출되어 상태가 생성되면 곧 바로 mo..
블루투스 scan 중 에 새로운 device 가 discover 되었다는 event를 받으면 호출 하는 함수를 아래와 같이 정의 하였다. ///--------------------------------------------------------------------------- /// 스캔된 장비 수 업데이트 메서드 /// - bleCommonData.isScanListUpdated 에서는 새로운 장비가 scan 되었을 때만 event 발생 /// 하고 기존에 scan 된 장비가 꺼졌을 때에 대해서는 인지하지 못하므로 이 메서드를 실행하여 update ///--------------------------------------------------------------------------- void up..
세번째 책은 오준석의 플러터 생활코딩이다. 20년 3월에 발행된 책이다. 다른 입문서에 비해 설명이더 쉽게 되어있는 편인 것 같다. 그리고 상태관리는 다루고 있지 않고 있다. (다른 입문서도 상태관리는 맛보기정도라 제대로 사용하려면 공부를 필요한건 맞지만) 이제 입문서를 그만봐도 되려나? 300페이지짜릴를 1~2시간이면 다 볼수 있어서 시간은 크게 잡아먹지 않지만 크게 얻는것도 없다...남은 2권도 빨리보고 입문서 몰아보기는 끝내야지 문단 마지막 사용 ?. 연산자는 null 여부를 간단히 판단할 수 있다. ?? 연산자는 객체가 null 일때 연산자 오른쪽에 있는 값을 반환한다. print(name?.length ?? 0 ); https://flutterstudio.app/ 에서 drag&drop 방색으로..
- Total
- Today
- Yesterday
- BLE
- 이미지
- TextFormField
- addPostFrameCallback
- 한빛미디어
- error
- UX
- IOS
- 다트
- Flutter
- firebase
- Syncfusion
- Chrome
- 문제 해결
- 디자인
- 앱개발
- 앱 프로그래밍
- plugin
- 에러
- position
- 인사이트
- TextField
- SizedBox
- 크롬
- DART
- 앱
- 플러터
- hide
- Bluetooth
- UI
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |