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 를 활용하여 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/zdYV4/btssUbALCHG/74OVhz0uG7yOOIGPkkEHv0/img.png)
현재 만들고 있는 앱의 디자인이 Bottom Navigation Bar (system UI) 와 어울리지 않아서 숨겨 두었다. main 함수에 아래와 같이 추가하면 숨겨진다 문제는 이 엃게 숨겨진 bottom navigation bar 가 영원히 숨겨지는게 아니란 것이다. 사용자가 터치스크린의 bottom edge에서 위쪽으로 swipe하면 다시 나타난다. 그리고 이로 인해 bottom 에 overflow가 발생한다. 이 문제를 해결하기 위해 구글링을 해보았다. 나와 같은 문제를 겪은 사람들이 몇몇 보이지만 완벽하게 해결할 수 있는 방법은 없는 듯하다. (몇 명 보이지 않는 이유가 화면 구성시 이러한 문제가 발생하지 않게끔 해주는 widget 이나 structure 가 있는지도 모르지....) 하나 찾은..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/stFlX/btrYtxsviPf/oTVejeKt6ZykPX0VxjdRM1/img.png)
앱 개발을 하면서 iOS 장비로 iPhone 6+ 와 iPhone Xs 를 사용하고 있다. 그리고 프로그래밍은 Mac mini(M1) 을 이용하고 있다. iPhone Xs 를 사용하게 된건 최근의 일인데, 그전까지 6+ 로 테스트를 했었다. 앱을 빌드하고 6+에 설치가 되면 이후에도 언제든 (Mac min 와의 연결을 하지 않은 상태에서도) 개발 과정에서 설치한 앱이 실행되었다. 그런데 Xs 는 안드로이드 스튜디오에서 run 을 하면 빌드하고 설치된 뒤 실행할 때는 정상 동작이 되는데, 테스트가 끝나고 연결(라이트닝 케이블 연결 제거)을 해제한 뒤 앱을 실행하기 위해서 아이콘을 터치하면 실행이 되지 않는다. iPhone 6+ 는 iOS 버전 12.x 이고, Xs는 iOS 버전이 16.2 다. 찾아보니 i..
지금 개발하는 앱에서 그래프를 그릴 때 저장된 모든 데이터를 그리도록 하고 있다. 15분을 측정한 데이터의 경우 데이터 샘플 수가 22500개 정도 된다. 초당 25개의 샘플을 저장하기 때문에 3분만 측정을 해도 4500개가 된다. 그렇다보니 syncfusion 에서 제공하는 open source 로 그래프를 나타내고 있는데, 그래프를 화면에 그리는데 긴 시간이 걸린다. 15분 측정 데이터를 화면에 뿌리려고 하니 10초 이상의 로딩 타임이 걸리는 것을 확인 했다. 어떻게 하면 이것을 줄일 수 있을까 싶어서 검색해보았다. 참고 자료 1. https://www.syncfusion.com/forums/175573/high-amount-of-data-points-block-the-whole 이 자료에서 질문자는..
The Dart int type is a 64-bit two's complement number—except when compiled for the web, there it's a 64-bit floating point number with no fractional part (a JavaScript number which has an integer value). How those values are represented internally depends on optimizations, they can be represented as something smaller if the runtime system knows for sure that the value will fit. That's an optimiz..
앱에서 버튼음과 같은 효과음을 넣기 위해 audioplayers 패키지를 사용했다. 하지만 자잘한 문제들이 있어, 나중에 기억 못할 까봐 남겨보려 한다. 1. PlayerMode .lowLatency 를 사용할 경우, 불편한 로그 메시지들이 쭈~~~욱 audioplayer의 setPlayMode와 관련하여 소스코드 주석을 보면, 낮은 지연을 위해서는 lowLatency모드를 사용하라고 되어있지만 실제로 적용해서 돌려보면 많은 log 메세지를 남긴다. 앱은 돌아가지만 뭔가 boundary를 넘어섰다고 하고, 어쩌고 저쩌고...은근 신경 쓰인다. 이걸 고칠 방법이 있나 찾아보니, 아래글에서처럼 lowLatency 쓰지 말란다. 참고 자료: https://github.com/bluefireteam/audiop..
- Total
- Today
- Yesterday
- position
- 이미지
- hide
- Syncfusion
- addPostFrameCallback
- 디자인
- SizedBox
- TextField
- 다트
- 플러터
- Bluetooth
- plugin
- UI
- 에러
- firebase
- error
- Flutter
- DART
- 인사이트
- 앱 프로그래밍
- IOS
- UX
- 문제 해결
- 앱개발
- BLE
- 크롬
- 앱
- 한빛미디어
- TextFormField
- Chrome
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |