All(264)
-
[Flutter] firebase_messaging과 flutter_local_notifications을 사용한 푸시 알림 기능 구현
이번에는 파이어베이스를 사용해서 모바일 디바이스에 푸시 알림을 보내고, 알림 소리를 커스터마이징하는 방법에 대해 정리해봅니다. 대충 찾아봐도 예제가 한가득 나오는 것 같지만 굳이 정리하는 이유가 별도로 있는데요. 검색과 삽질을 통해 확인해본 결과 대부분 검색 결과가 예제에만 그쳤기 때문에, 여러 검색 결과를 머릿속에 그러모아 짜집기해서 조립한 뒤에도 삽질에 삽질을 거듭한 뒤에야 간신히 원하는 기능을 구현할 수 있었기 때문입니다. 대부분의 경우 예제만 가지고 필요한 기능을 구현할 수 있겠지만, 검색을 거듭하다 결국 변방의 이 블로그에 이르렀다는 건 삽질에 삽질을 거듭하고 있다는 증거겠죠. 혹시나 삽질에 도움이 되는 내용이 있는지 빠르게 확인할 수 있게, 어떤 순서로 진행할 건지 나열해보겠습니다. 아, 공식..
2021.10.18 -
[Flutter/Dart] 정규표현식을 사용한 문자열 검출 및 범위값 파싱
변수를 사용한 정규표현식의 활용 이번에는 정규표현식을 활용해서 1과 0으로 이루어진 문자열을 압축하는(?) 로직을 작성해보자. 나는 데이터가 기록된 문자열에서 시간을 파싱할 때 이 방법을 사용했었다. 예를 들어서 00시부터 24시까지의 문자열이 주어진다고 치면, 전체 문자열의 길이는 144자이며 한 문자는 10분의 단위시간을 가지게 된다. 정규표현식을 사용하여 문자열이 매칭되는 시작 지점과 끝 지점의 인덱스를 알아내면, 문자열로부터 데이터가 위치한 시간을 계산해낼 수 있는 셈이다. 아무튼 오늘 해볼 것은 0과 1로 이루어진 문자열에서 match를 사용하여 시작 지점과 끝 지점을 구하고, 구간 형태의 데이터로 분리해보자. 뭐, 딱히 쓸데는 없다. ' ㅈ'; 문자열 만들기 우선은 0과 1로 구성된 문자열을 ..
2021.09.13 -
[Flutter/Dart] 확장 함수를 사용한 리스트 중복 체크
확장 함수를 사용한 리스트 중복 체크 이전에 Map에 확장함수(Extension method)를 만들어보자에서 간단하게 Map의 확장함수 fetch를 만들어서, 널 처리 및 타입 변환 등의 처리를 했었다. 이번에는 확장함수를 사용해서 배열의 중복 체크를 해보자. 결과부터 확인해보자. Dartpad에서 아래의 코드를 돌려보면 정상적으로 값이 출력되는 것을 확인할 수 있다. 간단하지만 자바스크립트로 구현했을때랑은 조금 다른데, 하나씩 살펴보도록 하자. extension ListExtension on List { bool isSameListWith(List other) { bool result = true; if (length == other.length) { asMap().forEach((index, val..
2021.09.13 -
[Flutter] Map에 확장함수(Extension method)를 만들어보자
Map의 확장함수 tryGet를 만들어보자 이미 이전에 Kotlin을 사용하면서 Kotlin에서 JSONObject .get*의 확장 함수를 만들어봤다.라는 글을 작성한 적이 있다. JSONObject를 참조할 때마다 매번 getInt(), getString()처럼 타입에 맞는 메소드를 호출해야했는데, 주어진 데이터에 따라 타입캐스팅 예외가 발생할 위험성이 있기 때문에 만든 확장함수였다. 이번에는 Dart의 확장함수에 대해 정리해보고, Map의 인자에 접근하기 위한 확장함수를 만들어보도록 하자. 확장 함수(Extension methods) Dart 2.7부터 지원하기 시작한 확장 메소드(Extension methods)를 사용하면 제공되는 라이브러리에 기능을 추가할 수 있다. 자세한 내용은 Extensi..
2021.08.19 -
[Flutter] 여러개의 비동기 처리에 대한 경쟁 상태의 처리
여러개의 비동기 처리에 대한 경쟁 상태의 처리 Dart에서는 Future 클래스를 사용해서 비동기에 대한 처리를 할 수 있습니다. async/await에 대한 내용은 비동기(Asynchronous)와 async/await, 그리고 여러개의 await에 대한 비동기 처리에서 한 차례 언급했으므로, 이번에는 가볍게 패스할께요. 이번에 살펴볼 내용은 여러개의 비동기 처리가 경쟁 상태(Race condition)로 주어졌을 때, 어떻게 처리하는지에 대한 얘기를 해보려고 합니다. 엥? 비동기에 경쟁 상태? 그거 Future.any() 호출하면 끝 아니냐? Dart의 dart:async 패키지에서 제공하는 Future패키지에는 Future.any라는 메소드를 제공합니다. Future.any(Iterable futu..
2021.07.27 -
[Flutter] 도로명 주소 검색하기 / Daum Postcode Search Package 배포기
Flutter로 도로명 주소 검색하기 때는 바야흐로 2021년 초여름, Flutter를 사용하고 있던 프로젝트에 위치를 지정해줘야하는 요구사항이 생겼습니다. 지도를 이용해서 위도와 경도를 저장하는 방법과, 주소를 이용해서 저장하는 방법 중 어떤 방법을 사용할지에 대해 고민한 결과... 시간도 얼마 안남았으니 일단 간단해보이는 녀석을 먼저 하자는, 나름대로 합리적인 듯 보이지만 실제로는 별 생각없는 방법으로 결정을 내리고 방법을 찾기 시작합니다. 카카오에서 제공하는 API를 사용하자 놀랍게도 카카오에서 제공하는 다음 우편번호 서비스를 사용하면, Key를 발급받을 필요도 사용량에 제한이 걸리는 일도 없이 도로명 주소를 검색하는 게 가능합니다. 와! 편리해! 이 정도면 누군가 라이브러리로 만들어놓지 않았을까,..
2021.07.26