일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 이모지메모
- Firebase
- recyclerview
- 오픈소스
- 장자명언
- 명언모음
- kotlin
- Flutter
- Android
- jetpack compose
- 좋은글필사하기
- 이모지
- 넷플릭스
- 명심보감
- 소울칼리버6
- Coroutine
- bash
- DART
- androidx
- FSM
- ASMR
- 공부집중
- Freesound
- Linux
- 1인개발자
- 공자명언
- 파이썬
- 코틀린
- 벤자민플랭클린
- Today
- Total
목록전체 글 (521)
Vintage appMaker의 Tech Blog
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/MAf69/btrJyrlICuc/ODwAauFBPtP5pIkWbF8vKk/img.gif)
Android와 같은 native 앱을 개발하다보면 list관련 view들은 스크롤이 변할 시, 리스트 item의 인덱스 정보를 넘겨주는 경향이 있다. 그래서 Flutter에서도 Scroll 변경시 처리하는 listener에서 index를 찾아보았지만 찾을 수 없었다. 단지 Flutter는 위젯의 키값을 사용하여 스크롤될 때의 위치를 계산하면서 파악할 수 밖에 없었다. 1. GlobalKey()를 사용해야 한다. 정보를 알고자 하는 위젯에 키값을 대입한다. 2. Scroll관련 listener에서 key값으로 위젯을 가져온다. 3. 이때, context의 findRenderObject를 사용하여 RenderBox 정보를 가져온다. 4. 그 값이 보여지는 위치의 상단을 기준으로 0값인지 -값인지를 비교한다..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/4TvRU/btrJvRZmpOq/MjNnf5ayVjlvgpKy9LuhK1/img.gif)
InteractiveView는 핀치인아웃(두손가락 확대축소)으로 위젯을 확대/축소할 수 있는 위젯이다. 그런데 Listview 안에서 사용할 경우, Scroll 이벤트와 핀치인아웃 행위가 충돌되므로 매끄럽게 확대축소가 되지 못하거나 아예 안되는 경우가 발생한다. 그런 문제를 해결하기 위해서 (1) 상위위젯에 Listener 위젯으로 덮어씌워서 (2) 2 포인트 터치가 있을 경우 (3) ListView의 스크롤 기능을 비활성화 시키는 로직을 구현한다. onPointerDown과 onPoinerUp에서 down과 up의 포인터를 저장하여 down시 up과의 편차가 1이상이 나왔을 경우, 두손가락을 터치했다고 판단한다. 그 때에는 ListView의 physics 파라메터를 변경하여 스크롤을 하지 못하게( Ne..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ydihW/btrJpMZkZ9k/rjptEzbKj2zP6DmX2RctAk/img.png)
🎁 플러터 패키지 설치 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 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bk1ZOj/btrJfYdd9xd/TlsMKgYn25aZaW9XzjP4W1/img.png)
프로그래밍을 하다보면 자주 발생하는 것이 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 ..