system_date_time_format 0.4.0 system_date_time_format: ^0.4.0 copied to clipboard
A plugin for getting date and time format patterns from device system settings.
SystemDateTimeFormat #
A plugin for getting date & time format from device system settings.
Why system_date_time_format? #
Flutter does not support retrieving date and time format patterns based on the user's system
settings out of the box. However, you can use the system_date_time_format
plugin to get
date and time format patterns for consistent formatting in your Flutter app.
Examples #
iOS (Region: United States 🇺🇸) | Result |
---|---|
Android (Region: United Kingdom 🇬🇧) | Result |
---|---|
macOS (Region: Poland 🇵🇱) | Result |
---|---|
windows (Region: United States 🇺🇸) | Result |
---|---|
web (Region: Poland 🇵🇱) |
---|
Usage #
Import import 'package:system_date_time_format/system_date_time_format.dart';
,
initialize SystemDateTimeFormat
and use getters to get date & time formats from device system.
Example:
import 'package:system_date_time_format/system_date_time_format.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await SystemDateTimeFormat().initialize();
runApp(const App());
}
Note
Don't forget to call
initialize()
before accessing any getters:
dateFormat
,mediumDateFormat
,longDateFormat
,timeFormat
otherwise it will throw
NotInitializedError
.
class App extends StatelessWidget {
const App({super.key});
@override
Widget build(BuildContext context) {
// SystemDateTimeFormat() is a Singleton
final dateFormat = SystemDateTimeFormat().dateFormat;
final timeFormat = SystemDateTimeFormat().timeFormat;
print(dateFormat); // e.g. "M/d/yy"
print(timeFormat); // e.g. "HH:mm"
return const MaterialApp(
home: Scaffold(),
);
}
}
Web #
In order to use this plugin on web app you need to add system_date_time_format.js
script to your index.html
:
<src="https://cdn.jsdelivr.net/gh/Nikoro/system_date_time_format@main/web/system_date_time_format.js"></script>
index.html
<!DOCTYPE html>
<html>
<head>
<!--...-->
<src="https://cdn.jsdelivr.net/gh/Nikoro/system_date_time_format@main/web/system_date_time_format.js"></script>
</head>
<body>
<!--...-->
</body>
</html>
Fallbacks #
In case of some error, e.g. PlatformException
plugin will return
fallback values
.
You can setup your own values by passing them in the initialize()
:
SystemDateTimeFormat().initialize(
dateFormatFallback: // default: 'M/d/yy'
mediumDateFormatFallback: // default: 'MMM d,y'
longDateFormatFallback: // default: 'MMMM d,y'
timeFormatFallback: // default: 'h:mm a'
);
Testing #
As the plugin class is not static, it is possible to mock and verify its behaviour when writing
tests as part of your application.
Check the source code
of example_with_tests
which is a modification of
basic example
with dependency injection using get_it and mocks thanks
to mocktail.