Dart의 유틸리티 패키지 supercharged 소개

들어가기에 앞서⚡️

Dart의 extension method 소개

Dart 프로그래밍 언어는 특정 원시형 (Primitives) 또는 클래스를 확장할 수 있는 도구를 제공합니다. 예를 들면, 문자열을 숫자로 바꾸는 아래의 메소드가 있다면,

아래와 같이 원시형 문자열에서 파생되는 새로운 메소드를 만들 수 있습니다.

구현은 다음과 같습니다.

이는 Ruby 또는 Python 에서 지원하는 extension method 와 동일합니다.

Java의 경우에는 static 메소드, JavaScript는 defineProperty 또는 prototype을 이용한 확장 정도가 유사합니다.

supercharged : extension method 의 집합

supercharged는 extension method의 모음입니다. Flutter 패키지 중 Simple Animations 버전 2 에서 주로 사용하고 있습니다. Tween 을 구현하다 보면 어쩔 수 없이 코드가 길어지는데 supercharged에 포함된 Tween 관련 extension method가 코드 길이를 줄여주고, 표현을 단순화하여 가독성을 높여줍니다.

supercharged는 다음의 원시형 또는 클래스를 확장합니다.

벳(A-Z)순입니다

  • Animatable
  • Color
  • DateTime
  • Double
  • Duration
  • Error
  • Int
  • Iterable
  • List
  • Map
  • String

예를 들어 Flutter 개발을 할 때 16진수로 이루어진 문자열로 색을 바로 사용할 수 없습니다. color: '#ff00ff' 처럼 사용해보려고 했으나 실제로는 color: const Color(0xff00ff) 로 사용해야합니다. 적응하면 큰 불편함이 없지만 다른 언어 또는 CSS에서 처럼 16진수를 사용하지 못해서 무의식 중에 '#ff00ff' 로 입력하는 경우가 있습니다.

supercharged는 다음과 같이 입력할 수 있도록 도와줍니다

아래는 supercharged로 주로 사용할만한 extension method의 목록입니다. 전체 내용은 supercharged 공식문서를 확인해주세요. 모든 supercharged의 extension method는 패키지를 import 한 다음에 사용해야합니다.

자주 사용할만한 supercharged 메소드 소개

문자열 변환

  • 문자열을 JSON으로 변환하기
  • int, double로 변환

Int

  • 반복
  • Duration으로 만들기
  • Tween

DateTime

  • 날짜 더하기, 빼기
  • 날짜 범위를 리스트로 만들기

Error

  • 특정 조건일 때 Throw
  • 특정 조건이 아닐 때 Throw

Iterable Aggregation 과 리스트

  • 리스트 연산
  • Map 리스트를 Map으로 만들기
  • forEach에서 Index 사용하기
  • 리스트의 특정 위치에서 엘리먼트를 찾거나, 기본값을 리턴
  • 리스트 객체의 groupBy
  • 리스트 정렬
  • 리스트를 JSON으로 변경하기

Map

  • Map을 JSON 객체로 변경하기

끝으로

supercharged가 반드시 필요한 것은 아니며, Dart 프로그래밍 언어가 개발이 덜 되었다기 보다는 다른 언어를 사용하던 사람들이 익숙한 방법을 Dart에서도 사용할 수 있게 확장한 것으로 보는 것이 더 맞습니다.

JavaScript 프론트엔드 처럼 패키지의 크기를 크게 만드는 경우가 아니기 때문에 다른 언어를 사용해서 개발하던 개발자 분들께서 Flutter를 개발하신다면 한번 쯤 살펴 보면 좋을 것 같습니다.

아래 문서를 통해 Dart의 extension method와 supercharged를 더 깊게 알아보세요

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store