Flutter’da farklı tarih formatları +Türkçe (Farklı dil seçenekleri)
Flutter’da tarihleri yazdırırken toString() kullandığınızda DateTime() kullanıyorsanız
2019-08-31 12:30:59.797258, böyle bir metinle karşılaşırsınız. Bu metni istediğimiz formata kendi fonksiyonumuzu yazarak dönüştürebiliriz. Bunu yapmak için hazır fonksiyonlar varsa eğer, ki var, bu anlamsız olacaktır.
Öyleyse öncelikle tarihimizi istediğimiz formata nasıl dönüştüreceğimiz ile başlayalım. Hemen dart‘ın hazır tarih formatı paketinı projemize import ediyoruz: (intl)
dependencies:
intl: ^0.16.0
bu kodu flutter: ile aynı girintiye sahip olacak şekilde ana dizinde bulunan pubspec.yaml dosyamızın dependencies kısmına ekliyoruz (not: dependencies kısmında flutter_localizations kullanılıyorsa bu kodu eklemenize gerek yok). dependencies kısmı aşağıdaki gibi olacaktır:
dependencies:
flutter:
sdk: flutter
intl: ^0.16.0
Şimdi çalıştığımız dosyaya bu paketi import ediyoruz:
import 'package:intl/intl.dart';
bu kodu sayfanın üstüne yerleştiriyoruz (main.dart veya çalıştığınız sayfada en tepeye)
Artık tarihleri kolaylıkla istediğimiz formatta yazdırabiliriz, üstelik toString() kullanmamıza gerek kalmadan… Aşağıda örnek kullanımlar bulunmaktadır (tarih bilgisi tarihDegiskeni olarak kullanılmıştır):
DateFormat.yMMMd().format(tarihDegiskeni) //Ürettiği tarih formatı: Aug 31, 2019
DateFormat.yMd().format(tarihDegiskeni) //Ürettiği tarih formatı: 8/31/2019
DateFormat.yMMMEd().format(tarihDegiskeni) //Ürettiği tarih formatı: Sat, Aug 31, 2019
Tüm tarih formatlarını görmek için pub.dev üzerinde bulunan ilgili dart dökümantasyonuna bakabilirsiniz. Ayrıca intl isimli paket hakkında daha fazla bilgi edinmek için paketin dökümantasyonunu inceleyebilirsiniz.
Farklı dil seçenekleri
Bu tarih formatlarını istediğiniz dilde kullanabilmek için aşağıdaki şekilde kullanmanız yeterli olacaktır.
DateFormat.yMMMd('tr_TR').format(tarihDegiskeni) //Üreteceği tarih formatı: 31 Ağu 2019
DateFormat.yMMMEd('tr_TR').format(tarihDegiskeni) //Üreteceği tarih formatı: 31 Ağu 2019 Cmt
‘tr_TR’ yerine ‘tr’ kullanmak isterseniz flutter’da şöyle bir hata alırsınız:
Locale data has not been initialized, call initializeDateFormatting(<locale>)
Bu durumda flutter size bu dilin uygulamanızda kullanımda olmadığı söylüyor (eğer flutter_localizations projenizde kullanımdaysa tabi ki böyle bir hatayla karşılaşmazsınız). Bu şekilde kullanmak ve bu hatadan kaçınmak isterseniz yapmanız gereken iki şey var:
- ilk olarak projemize date_symbol_data_local.dart paketini import ediyoruz:
import 'package:intl/date_symbol_data_local.dart';
bu kodu sayfanın üstüne yerleştiriyoruz (main.dart veya çalıştığınız sayfada en tepeye)
- ikinci olarak build fonksiyonumuzun içine “initializeDateFormatting(‘tr’); “ şeklinde kullanacağımız dil paketini belirtiyoruz. Önek kullanım:
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
initializeDateFormatting('tr'); //bu satırı ekliyoruz
return MaterialApp(
title: 'Mehmet BÜTÜN',
home: MyHomePage(),
);
}
}
Güzel anlatım olmuş teşekkürler.
Evde kimse yok mu? 🙂
Hi there mates, its impressive post about cultureand completely defined, keep it up all the time.
Thank you, your site is very useful!
And you have understood?