import 'package:flutter/material.dart'; import 'package:intl/date_symbol_data_local.dart'; import 'package:intl/intl.dart'; void main() async { await initializeDateFormatting(); runApp(TestDateFormatApp()); } class TestDateFormatApp extends StatelessWidget { @override Widget build(BuildContext context) { return const MaterialApp( home: TestDateFormatScreen(), ); } } class TestDateFormatScreen extends StatefulWidget { const TestDateFormatScreen({super.key}); @override State createState() => _TestDateFormatScreenState(); } class _TestDateFormatScreenState extends State { String _curLocale = 'en_US'; @override Widget build(BuildContext context) { final now = DateTime.now(); final icuConstantNames = [ DateFormat.ABBR_MONTH, DateFormat.DAY, DateFormat.ABBR_WEEKDAY, DateFormat.WEEKDAY, DateFormat.ABBR_STANDALONE_MONTH, DateFormat.STANDALONE_MONTH, DateFormat.NUM_MONTH, DateFormat.NUM_MONTH_DAY, DateFormat.NUM_MONTH_WEEKDAY_DAY, DateFormat.ABBR_MONTH_DAY, DateFormat.ABBR_MONTH_WEEKDAY_DAY, DateFormat.MONTH, DateFormat.MONTH_DAY, DateFormat.MONTH_WEEKDAY_DAY, DateFormat.ABBR_QUARTER, DateFormat.QUARTER, DateFormat.YEAR, DateFormat.YEAR_NUM_MONTH, DateFormat.YEAR_NUM_MONTH_DAY, DateFormat.YEAR_NUM_MONTH_WEEKDAY_DAY, DateFormat.YEAR_ABBR_MONTH, DateFormat.YEAR_ABBR_MONTH_DAY, DateFormat.YEAR_ABBR_MONTH_WEEKDAY_DAY, DateFormat.YEAR_MONTH, DateFormat.YEAR_MONTH_DAY, DateFormat.YEAR_MONTH_WEEKDAY_DAY, DateFormat.YEAR_ABBR_QUARTER, DateFormat.YEAR_QUARTER, DateFormat.HOUR24, DateFormat.HOUR24_MINUTE, DateFormat.HOUR24_MINUTE_SECOND, DateFormat.HOUR, DateFormat.HOUR_MINUTE, DateFormat.HOUR_MINUTE_SECOND, ]; return Scaffold( body: SafeArea( child: SingleChildScrollView( padding: const EdgeInsets.all(16), child: Column( children: [ DropdownButton( value: _curLocale, icon: const Icon(Icons.arrow_downward), elevation: 16, style: const TextStyle(color: Colors.deepPurple), underline: Container( height: 2, color: Colors.deepPurpleAccent, ), onChanged: (value) { setState(() { _curLocale = value!; }); }, items: DateFormat.allLocalesWithSymbols() .map>((value) { return DropdownMenuItem( value: value, child: Text(value), ); }).toList(), ), const SizedBox(height: 8), ListView.separated( primary: false, shrinkWrap: true, itemCount: icuConstantNames.length, itemBuilder: (_, index) { final dateFormat = DateFormat(icuConstantNames[index], _curLocale); return Padding( padding: const EdgeInsets.symmetric(vertical: 16), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ // Text('${index + 1}/'), // SizedBox(height: 8), Text( dateFormat.pattern ?? '', ), const SizedBox(height: 8), Text(dateFormat.format(now)), ], ), ); }, separatorBuilder: (_, __) => Container( height: 1, color: Colors.black, ), ), ], ), ), ), ); } }