본문 바로가기

dart

(10)
Flutter Version Management(FVM) 사용법 정리(Mac) flutter sdk version 관리를 쉽게 할 수 있도록 도와주는 fvm 사용법을 계속 까먹어서 정리하려고 한다.flutter sdk version release가 빠르게 이루어지기 때문에 한번 셋팅해놓고 사용하면 편할 것 같다.설치brew tap leoafarias/fvmbrew install fvm터미널에 위 커맨드를 입력하면된다. 첫번째 커맨드는 이상하게 생겼다고 스킵하면 안되고 fvm을 제공하는 git repository를 추가해주는거라 입력해줘야 한다.삭제brew uninstall fvmbrew untap leoafarias/fvm실행dart pub global activate fvmfvm 설치를 했다면 위의 커맨드를 통해 fvm를 실행시킬 수 있다.사용법https://fvm.app/doc..
flutter_gen 패키지를 이용하여 asset 사용하기 일반적으로 경로에서 이미지나 폰트를 불러오는 경우에는 아래와 같이 문자열로 경로나 폰트 명을 지정한다. Widget image() { return Image.asset('assets/images/profile.jpeg'); } Widget text() { return Text("hello", style: TextStyle(fontFamily: "Pretendard")); } 하지만 이러한 경우에는 오타 등과 같은 휴먼 에러의 위험성이 있고, 유지보수 측면에서도 그다지 좋은 점이 없다. flutter_gen flutter_gen | Dart Package The Flutter code generator for your assets, fonts, colors, … — Get rid of all String-..
Dart의 동시성 정리 - Isolate 동시성(Concurrency) 동시성(Concurrency)과 병렬성(Parallelism) 동시성(Concurrency은 Task들이 빠르게 전환하면서 실행되어 동시에 실행되는 것처럼 보이는 것입니다. 싱글 코어에서도 여러 작업은 동시적(Concurrent)으로 실행되며 Task간의 Context Switch가 발생하면 velog.io Task들이 빠르게 전환하면서 동시에 실행되는 것처럼 보이는 것, 동시성은 싱글 코어에서만 실행되는 것을 의미하지 않고 실제로는 멀티코어에서 실행되는 상황이 더 많다. 즉 동시성은 독립적인 연산은 작은 단위의 연산으로 나누고, 논리적으로 동시에 실행하는 것처럼 보이게 하여 Idle Time을 최소화 하는 구조나 개념을 의미한다. Isolate란? - 앱의 모든 Dart ..
Dart 3 업데이트 문법 Records Record는 익명이고 불변인 집합 타입이다. Records는 크기가 고정되어 있고 여러 타입의 개체를 담을 수 있으며 Map, List, Set과 같은 컬렉션에 저장할 수 있다. syntax Record는 소괄호로 감싸져있고, 안의 요소들은 쉼표로 구분된다. 또한 위에서 말한 것처럼 여러 타입을 담을 수 있다. Record 값은 dollar sign을 통해서 접근할 수 있다. var records = ("first", true, 1); // (String, bool, int) records = ("first", true, 1); print(records.$1); // first print(records.$2); // true print(records.$3); // 1 named field..
Flutter Mockito를 이용한 API 통신 Unit Test API 통신 기능을 unit test 할 때 실제 API를 호출하여 진행하면 몇 가지 문제가 있다. 실제 API를 요청하게 되면 test 성능이 저하될 수 있다. 서버의 이상 유무에 따라 응답 값이 달라질 수 있고, 이 경우 테스트가 실패하게 된다. 모든 성공, 실패를 테스트하기는 무리가 있다. 위와 같은 이유로 Flutter에서는 Mock 객체를 생성하여 다양한 케이스를 테스트할 수 있고, 이는 annotation과 code generation을 제공하는 mockito 패키지를 이용하여 진행하면 된다. Example Mockito Package https://pub.dev/packages/mockito mockito | Dart Package A mock framework inspired by Mock..
Flutter InheritedWidget https://api.flutter.dev/flutter/widgets/InheritedWidget-class.html InheritedWidget class - widgets library - Dart API Base class for widgets that efficiently propagate information down the tree. To obtain the nearest instance of a particular type of inherited widget from a build context, use BuildContext.dependOnInheritedWidgetOfExactType. Inherited widgets, when referenc api.flutter.dev 복잡한 구조의..
뒤늦게 정리하는 Flutter riverpod 개념 공부를 하면서 새로 알게된 상태관리 플러그인 riverpod provider들의 개념 정리 riverpod Provider 종류 Provider 가장 베이스가 되는 Provider 아무 타입이나 반환 가능 반환 값을 캐싱할 때 많이 사용 여러 Provider를 묶어서 한번에 반환 값을 만들어낼 수 있다. StateProvider ui에서 직접적으로 데이터를 변경하고 싶을 때 사용 단순한 형태의 데이터 관리에 사용 StateNotifierProvider StateProvider와 마찬가지로 데이터를 직접적으로 변경하고 싶을 때 사용 복잡한 형태의 데이터를 관리할 수 있다. StateNotifier를 상속한 값을 반환한다. FutureProvider Future 타입만 반환 가능 복잡한 기능 또는 사용자의 ..
Debounce와 Throttle 개발을 마치고 테스트를 하다보면 특정 함수가 중복으로 여러번 실행되는 경우가 있다. 지금까지는 함수 실행 사이에 일정 시간 간격을 두고 제한을 하는 등의 방법으로 해결했는데 더 좋은 방법을 알게 되었는데 바로 Debounce와 Throttle이다. 모두 특정 함수의 실행을 제한하는 기능을 제공한다. Debounce Debounce는 특정 기간 안의 함수 실행을 모두 제한하고 마지막에만 실행한다. https://rxmarbles.com/#debounce RxMarbles: Interactive diagrams of Rx Observables rxmarbles.com 위 이미지에서 첫번째 라인은 함수 실행 명령이고, 두번째 라인은 실제 실행 결과이다. duration 1초의 설정 값을 가진 함수는 1초 안에..