일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 공부집중
- Streaming
- Freesound
- 이모지메모
- 좋은글필사하기
- androidx
- 장자명언
- 벤자민플랭클린
- FSM
- javascript
- 소울칼리버6
- kotlin
- 이모지
- 공자명언
- Coroutine
- 오픈소스
- Linux
- 파이썬
- Firebase
- ASMR
- 1인개발자
- recyclerview
- 코틀린
- Android
- jetpack compose
- DART
- 명언모음
- 명심보감
- Flutter
- ChatGPT
- Today
- Total
목록Source code or Tip (213)
Vintage appMaker의 Tech Blog

Android와 같은 native 앱을 개발하다보면 list관련 view들은 스크롤이 변할 시, 리스트 item의 인덱스 정보를 넘겨주는 경향이 있다. 그래서 Flutter에서도 Scroll 변경시 처리하는 listener에서 index를 찾아보았지만 찾을 수 없었다. 단지 Flutter는 위젯의 키값을 사용하여 스크롤될 때의 위치를 계산하면서 파악할 수 밖에 없었다. 1. GlobalKey()를 사용해야 한다. 정보를 알고자 하는 위젯에 키값을 대입한다. 2. Scroll관련 listener에서 key값으로 위젯을 가져온다. 3. 이때, context의 findRenderObject를 사용하여 RenderBox 정보를 가져온다. 4. 그 값이 보여지는 위치의 상단을 기준으로 0값인지 -값인지를 비교한다..

InteractiveView는 핀치인아웃(두손가락 확대축소)으로 위젯을 확대/축소할 수 있는 위젯이다. 그런데 Listview 안에서 사용할 경우, Scroll 이벤트와 핀치인아웃 행위가 충돌되므로 매끄럽게 확대축소가 되지 못하거나 아예 안되는 경우가 발생한다. 그런 문제를 해결하기 위해서 (1) 상위위젯에 Listener 위젯으로 덮어씌워서 (2) 2 포인트 터치가 있을 경우 (3) ListView의 스크롤 기능을 비활성화 시키는 로직을 구현한다. onPointerDown과 onPoinerUp에서 down과 up의 포인터를 저장하여 down시 up과의 편차가 1이상이 나왔을 경우, 두손가락을 터치했다고 판단한다. 그 때에는 ListView의 physics 파라메터를 변경하여 스크롤을 하지 못하게( Ne..

🎁 플러터 패키지 설치 Dart packages Pub is the package manager for the Dart programming language, containing reusable libraries & packages for Flutter, AngularDart, and general Dart programs. pub.dev Flutter에서 패키지(플러그인) 설치는 거의 필수에 가깝다. 다양한 기능을 제공하는 패키지를 설치 및 예제를 보려고 한다면 pub.dev는 반드시 들리게 되는 사이트이다. 🎁 플러터 개발자 문서 Flutter - Dart API docs Welcome to the Flutter API reference documentation! Flutter is Google's ..

프로그래밍을 하다보면 자주 발생하는 것이 list내의 값을 비교하여 새로운 리스트를 만드는 작업이다. 대부분의 collection을 지원하는 언어에서는 새로운 list를 만들 수 있도록 map()과 같은 함수를 제공해준다. dart에서는 (1) where() 메소드에 조건을 지정하는 클로져를 넘겨 리스트를 필터하고 그 필터값을 가지고 (2) map() 메소드에 클로져를 넘겨 새로운 형태를 만든 후, (3) toList()를 통해 list를 만들 수 있다. 다음은 전체소스이다. class Option{ Option({required this.isSelected, required this.name}); bool isSelected ; String name ; } void main() { var fruits ..