전체 글 372

<다트> == true, == false 사용하지 마세요

🧭 == true, == false nullable 타입의 변수의 null 여부에 따라 조건문을 분기하는 경우가 있습니다. 첫번째 방법은 변수?.isEmpty == true 처럼 null 인 경우 false가 되도록 판단하는 것입니다. 두번째 방법은 변수?.isEmpty ?? false 처럼 사용하는 것입니다. 저는 두번째 방법을 추천드립니다. 이유는 2가지 입니다. 우선 변수가 null 이면 false 라고 쉽게 파악할 수 있습니다. 첫번째 방법을 사용한 경우 null은 true가 아니니까 false 구나라고 한단계 더 생각해야 합니다. 다음으로 해당 값이 null일 수 없는 경우를 바로 알 수 있습니다. null이 아닌 경우 dart lint 도구가 필요없는 코드라고 hint를 줄 것입니다.

무기/다트 2022.11.17

<플러터> 파이어베이스 iOS 앱 빌드 속도 개선

🧭 iOS 빌드 속도는 안드로이드에 비해 다소 느린 감이 있습니다. 특히, 파이어베이스를 연동하면서 속도가 저하되는데 precomplied SDK를 활용하면 이를 개선할 수 있습니다. root > ios > Podfile 파일에 파이어베이스 버전명을 포함하여 다음과 같은 코드를 추가합니다. pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '10.0.0' 아래는 위 코드를 반영한 모습입니다. 참고한 사이트에서는 성능을 67% 까지 감소시켰다고 나와 있습니다. 제가 측정한 빌드 시간은 70여초에서 60여초로 크게 체감되는 정도는 아니었습니다. 📌 https://www...

액티브 스킬 2022.11.15

<독서> 내일 - 기욤 뮈소

📖 뻔한 소재와 참신한 전개 과거와 현재를 잇는 이야기 전개를 가지고 있습니다.글이나 영화에서 여러번 다루어진 소재라 자칫 뻔하게 흘러가지 않을까 걱정도 되었습니다.그 걱정은 기우였고 소재가 뻔하더라도 전개는 항상 새로울 수 있겠다는 기대감을 갖게 만들었습니다. http://www.yes24.com/Product/Goods/11575192 내일 - YES24 사랑과 감동의 마에스트로 기욤 뮈소의 명품 스릴러책장을 덮을 때까지 계속되는 숨 막히는 반전의 롤러코스터《내일》은 한국에서 10번째로 출간하는 기욤 뮈소의 장편소설이다. 프랑스 언론 www.yes24.com

클래스/모험가 2022.11.13

<Flutter> dynamic 변수의 타입 확인

🧭 변수의 타입을 왜 확인해야 하는가? 모든 변수를 정적 타입으로 선언했다면 타입을 확인할 필요가 없을 것입니다. 오래된 프로젝트를 업그레이드 한다든지 하는 경우 dynamic 타입의 변수를 마주할 수 있고 타입을 확인하고 싶은 경우가 있을 수 있습니다. 플러터의 모든 변수들의 조상격인 Object 타입에는 runtimeType이라는 프로퍼티가 있습니다. 어떤 변수든 runtimeType 프로퍼티를 불러와서 출력하면 타입을 확인할 수 있습니다. dynamic variable; print(variable.runtimeType); // dynamic 📌 https://www.kindacode.com/article/how-to-check-type-of-a-variable-in-flutter/ How to ch..

<Android> jCenter vs mavenCentral

🧭 출근해서 개발 중인 앱을 빌드하자마자 에러가 발생했습니다. 'A problem occured configuring project ...' 등등... Gradle 관련 에러라고만 생각해서 한참 삽질을 했습니다. jCenter 관련해서 빌드가 안되고 있다는 상황을 접하게 되었습니다. jCenter jCenter는 플러터의 pub.dev 같은 플러그인 원격 저장소입니다. 해당 사이트가 맛이 갔나 봅니다. 우선 iOS로 작업했습니다. 내일도 같은 상황이 어어진다면 mavenCentral이라는 대안을 사용하고자 합니다. 📌 https://stackoverflow.com/questions/50726435/difference-among-mavencentral-jcenter-and-mavenlocal Differe..

액티브 스킬 2022.10.31

<Dart> 객체의 DateTime 값을 기준으로 정렬

🧭 sort list의 sort 메서드를 활용하면 list를 정렬할 수 있습니다. sort 메서드의 인자로는 비교함수를 대입하게 됩니다. 단순 오름차순/내림차순의 경우에는 비교함수를 생략하고 sort() 메서드의 호출만으로 정렬이 됩니다. sort 메서드는 원본 list를 변경하는 파괴적 메서드입니다. compareTo 정렬 기준이 단순 값이 아닌 객체의 특정 프로퍼티 등인 경우에는 compareTo 함수를 통해 비교하게 됩니다. list.sort((a, b) => a.dateTime.compareTo(b.dateTime)); DateTime 타입은 추가 가공없이 compareTo로 비교 가능합니다. 📌 https://api.flutter.dev/flutter/dart-core/List/sort.html..

무기/다트 2022.10.24

<Flutter> SliverFillRemaining - 스크롤뷰 내부 위젯들이 높이를 가득채우지 못할 경우 나머지를 채우는 방법

🧭 CustomScrollView 스크롤뷰가 포함하는 자식 위젯들의 형태(높이 등)를 원하는 대로 수정하기 위해 CustomScrollView를 사용합니다. CustomScrollView는 Sliver로 시작하는 몇개의 위젯들을 자식으로 가질 수 있습니다. SliverFillRemaining 그 중에 SliverFillRemaining을 다뤄보고자 합니다. 위젯들의 전체 높이가 화면을 초과하는 경우 가장 쉽게 생각할 수 있는 방법은 전체 위젯을 SingleChildScrollView로 감싸는 것입니다. 그런데 표현하는 내용에 따라 위젯들의 전체 높이(노란색)가 화면의 일부만 채우는 경우 어떻게 될까요? 아래 이미지의 하단과 같이 흰 여백이 생길 것입니다. 이 여백을 채우기 위해서는 SingleChildS..