flutter 27

[플러터] Equatable 패키지 사용하기

플러터(Flutter)에서 개발을 진행하다 보면, 상태 관리와 관련하여 객체의 동등성(equality)을 확인해야 하는 상황이 자주 발생합니다. 이러한 문제를 해결하기 위해 Equatable 패키지를 사용하는 것이 일반적인 방법 중 하나입니다. 이 글에서는 Equatable 패키지가 무엇이고, 왜 플러터 개발에서 이를 사용하는지에 대해 설명하려고 합니다. Equatable 패키지란? Equatable은 Dart의 객체들이 서로 동등한지를 쉽게 확인할 수 있도록 도와주는 패키지입니다. Dart에서는 기본적으로 객체의 동등성을 == 연산자를 통해 확인할 수 있으나, 이는 기본적으로 객체의 식별자(identity)를 기반으로 합니다. 즉, 두 객체가 물리적으로 같은 인스턴스일 때만 true를 반환합니다. 이는..

<플러터> DateTime 다루기

🧭 DateTime 메서드 .toLocal() DateTime 타입의 데이터를 현지 시간으로 표현 .toUtc() DateTime 타입의 데이터를 utc 기준으로 표현 .difference(DateTime other) 파라미터로 넘어온 날짜로부터 차이나는 일수를 반환 DateUtils .dateOnly(DateTime date) 년월일까지만 반환 (시, 분, 초는 00으로 반영) .isSameDay(DateTime? dateA, DateTime? dateB) dateA와 dateB가 같은 날짜 인지 확인 (시, 분, 초 무시)

<다트> Stopwatch - 함수 호출 완료 시간 검토

🧭 함수 호출 시간 개발을 하다보면 함수 호출이 완료되기 까지 시간이 얼마나 걸리는지 확인해야 할 필요가 있거나 확인하고 싶을 때가 있습니다. Stopwatch 이럴 때 사용하는 클래스가 Stopwatch입니다. 바로 사용해 보겠습니다. void yourFunction() { final stopwatch = Stopwatch()..start(); // something to do... stopwatch.stop(); print('Microseconds:${stopwatch.elapsedMicroseconds}'); } 함수 시작시 stopwatch를 start하고, 종료 직전 stop하면 함수 안에서 시간이 얼마나 소요되는지 확인할 수 있습니다. 📌 https://api.flutter.dev/flutte..

무기/다트 2023.04.08

<플러터: Xcode> Xcode 14.3 빌드 에러

🐛 Xcode 14.3 에러 #1 Could not build the precompiled application for the device. Error (Xcode): File not found: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphoneos.a Error (Xcode): Linker command failed with exit code 1 (use -v to see invocation) 해결 #1 ios/Podfile에 아래와 같은 코드를 추가했습니다. (추가할 위치 파악을 위해, 기존 코드도 포함) post_install do |installer| i..

<플러터> showDialog context 에러: Get.context, nullable

상황 showDialog 호출할 때 Get.context로 context 불러오는 중 null 체크 에러 발생 해결 MaterialApp을 GetMaterialApp으로 교체 참고 https://github.com/jonataslaw/getx/issues/695 Get.context is null during unit tests · Issue #695 · jonataslaw/getx I am using mobx for state management and before adding get package to my project, I was passing the context to each action I needed to. Now by the help of Get.context, I remove all t..

<플러터> StatefulBuilder

🧭 다이얼로그 안에서 setState 사용하기 StatefulWidget 내에서 다이얼로그를 띄우고, 다이얼로그의 상태를 변경하기 위해 setState를 사용하였으나 상태가 변경되지 않았습니다. 다이얼로그에서 setState를 썼을때 다이얼로그를 제외한 StatefulWidget의 상태가 업데이트가 되는걸까 라는 추측을 하게 되었습니다. 맞았습니다. 다이얼로그에서 StatefulBuilder를 통해 위젯을 만들어야 다이얼로그 내의 상태를 변경할 수 있었습니다. 공홈에서는 전체 위젯을 rebuild하지 않고 특정 부분만 rebuild하기 위한 용도로 설명하고 있습니다. 📌 https://changjoopark.medium.com/flutter-dialog-%EC%95%88%EC%97%90%EC%84%9C-..

<플러터> iOS에서 SafeArea 적용으로 발생하는 하단 여백 색상 변경

🧭 SafeArea 플러터에서는 모바일 화면 상단의 상태바, iOS 하단의 노치 등의 공간을 제외하고 작업하기 위해 SafeArea 위젯을 사용합니다. 한편 전체를 차지하는 화면이 아닌 화면의 일부, 그 중에서도 하단의 일부를 차지하는 위젯에 SafeArea를 적용하는 경우 배경 색상이 원하는 색상이 아닌 경우가 있습니다. 전체 화면에 적용된 색상과 하단의 일부를 차지하는 해당 위젯의 배경 색상이 다른 경우에 SafeArea로 띄어진 하단의 노치 부분은 전체 화면의 배경 색상을 가지고 있을 것입니다. 하단의 일부를 차지하는 위젯의 배경 색상을 그대로 적용하기 위해서는 SafeArea로 감싼 부분을 다시 Container 위젯으로 감싸고, color 값을 원하는 색상으로 설정해 주면 됩니다. 📌 https..

<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