[flutter] 플러터 intl을 사용해서 지역화된 날짜와 시간 표시를 어떻게 처리하나요?
먼저, intl
패키지를 프로젝트에 추가해야 합니다. pubspec.yaml
파일에 아래와 같이 intl
패키지를 추가합니다:
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
intl: ^0.17.0
이제 main.dart
파일에서 intl
패키지를 import하고, MaterialApp
위젯의 localizationsDelegates
와 supportedLocales
속성을 설정해야 합니다. 예를 들어, 다음과 같이 설정할 수 있습니다:
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Intl Example',
localizationsDelegates: [
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
// 추가로 사용할 delegate 들을 여기에 추가할 수 있습니다.
// 예를 들어 GlobalCupertinoLocalizations.delegate 등이 있습니다.
],
supportedLocales: [
const Locale('en', ''), // 영어
const Locale('ko', ''), // 한국어
// 지원할 언어들을 여기에 추가합니다.
],
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
// 현재 날짜와 시간을 가져오기 위해 DateTime.now()를 사용합니다.
DateTime now = DateTime.now();
// DateFormat을 사용하여 날짜와 시간을 형식화합니다.
DateFormat dateFormat = DateFormat.yMMMMd('en'); // 예: September 20, 2022
DateFormat timeFormat = DateFormat.Hm('en'); // 예: 14:30
// 각 언어에 맞는 DateFormat으로 날짜와 시간을 형식화합니다.
String formattedDate = dateFormat.format(now); // 예: 9월 20일, 2022
String formattedTime = timeFormat.format(now); // 예: 14:30
return Scaffold(
appBar: AppBar(
title: Text('Flutter Intl Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('현재 날짜: $formattedDate'),
Text('현재 시간: $formattedTime'),
],
),
),
);
}
}
위의 예제 코드는 intl
패키지를 사용하여 현재 날짜와 시간을 형식화하고, 언어에 따라 다른 형식의 날짜와 시간을 표시하는 방법을 보여줍니다. DateFormat
클래스를 사용하여 날짜와 시간을 형식화할 수 있으며, Locale
클래스를 사용하여 언어를 지정할 수 있습니다. localizationsDelegates
와 supportedLocales
속성을 설정하여 앱을 다국어 지원할 수 있습니다.
더 자세한 내용은 공식 문서를 참고하시기 바랍니다.