안녕하세요.
개발아빠입니다.
오늘은 제가 계속적으로 공부하면서 만드는 PWA / 안드로이드앱 - 아이가 자란다 에서
가격을 보여주는 기능을 개발을 하다가,
가격을 표시해주기 위해서 처리했던 내용을 공유해드릴까 합니다.
오늘은 간단하니 잠시만 봐주세요~
상품상세 페이지를 만들고 있는데, 아래와 같이 금액표시가 일반적이지 않게 되고 있네요~
이걸 간단하게 처리해보겠습니다~
먼저 pubspec.yaml 에 추가해줍니다.
intl: ^0.16.1
위에 라이브러리는 날짜나 단위들을 포맷팅하는데 자주 사용되는 거의 필수적인 라이브러리 입니다.
Intl
This package provides internationalization and localization facilities, including message translation, plurals and genders, date/number formatting and parsing, and bidirectional text.
이것만 추가하면 거의 절반은 다 온듯합니다~
intl 에 있는 NumberFormat 클래스에서 simpleCurrency 메소드를 째려봅니다~
currency 메소드도 있지만 simpleCurrency 만으로도 기능을 충분히 사용할 수 있습니다.
factory NumberFormat.simpleCurrency(
{String locale, String name, int decimalDigits}) {
return NumberFormat._forPattern(locale, (x) => x.CURRENCY_PATTERN,
name: name,
computeCurrencySymbol: (format) =>
_simpleCurrencySymbols[format.currencyName] ?? format.currencyName,
decimalDigits: decimalDigits,
isForCurrency: true);
}
locale , name, decimalDigits 3가지 값들로 이제 데이터를 버무려 보겠습니다.
해당값들이 필수는 아니기에
final formatCurrency = new NumberFormat.simpleCurrency();
선언해주고,
formatCurrency.format(17740)
자 끝!
17,740원 짜리가 17,7440 달러 만원짜리가 천만원짜리가 되었습니다.
locale이 미국으로 되어있나보네요~
한국은 ko_KR이니 locale을 수정해볼께요~
final formatCurrency = new NumberFormat.simpleCurrency(locale: "ko_KR");
꽤 원하는 쪽으로 접근했습니다.
이대로도 문제없는듯하지만, 너무 글로벌 냄새가 나네요 앞에 화폐단위를 빼보겠습니다.
여기 name값과 decimalDigits 을 함께 조정해주면 됩니다.
name의 역할과 decimalDigits을 잠깐보시면
아래와 같이 바꿔보면 금방 이해가 되실겁니다.
final formatCurrency = new NumberFormat.simpleCurrency(locale: "ko_KR", name: "BIT", decimalDigits: 5);
결과는요~
또 부자가 되었습니다. 비트코인이 이만큼이 되었습니다.
이와 같이 name은 화폐단위를 조정하는 값이고, decimalDigits은 소수점 이하자리수를 얼마나 표시할지에 대한 값입니다.
저는 name값은 필요없고, 소수점 이하값도 필요가 없어서
이렇게 마무리 해주면요
final formatCurrency = new NumberFormat.simpleCurrency(locale: "ko_KR", name: "", decimalDigits: 0);
formatCurrency.format(17740)
아래와 같이 잘 나옵니다~
이걸 공통 함수로 하나 빼서 만들어서 사용하시면 필요하실때마다 편하게 쓰실 수 있습니다.
static String currencyFormat(int price) {
final formatCurrency = new NumberFormat.simpleCurrency(locale: "ko_KR", name: "", decimalDigits: 0);
return formatCurrency.format(price);
}
오늘은 아주 간단하게 화폐 단위를 포맷팅하는 방법에 대해서 배워봤습니다.
아마 화폐나 날짜 관련해서 intl에 각종 답들이 있을테니,
관련해서 작업하실 경우에는 해당 라이브러리를 찾아보세요~
오늘도
즐코하세요.
'개발아빠 > Flutter' 카테고리의 다른 글
[Flutter] 텍스트필드(TextField) Counter 위치 변경하기 (0) | 2021.01.08 |
---|---|
플러터(Flutter)에서 Fluro 사용하여 Router 설정하기 (5) | 2020.11.05 |
플러터(Flutter) 네이티브앱과 Web에서 웹뷰 처리하기 (1) | 2020.10.12 |
플러터(Flutter) WebView 사용 및 History 제어 기능 추가 (2) | 2020.10.07 |
플러터(Flutter) 플랫폼 구분하기 (Android, iOS, Web) (0) | 2020.10.01 |