lit_relative_date_time 0.0.2 copy "lit_relative_date_time: ^0.0.2" to clipboard
lit_relative_date_time: ^0.0.2 copied to clipboard

A Flutter package to generate relative dates to show differences in time in localized and human-readable format.

Lit Relative Date Time #

A Flutter package to generate relative dates to show differences in time in localized and human-readable format.

Screenshots #

Difference in seconds (eng. locale) Difference in seconds (ger. locale)
Difference in seconds (eng. locale) Difference in seconds (ger. locale)

How it works #

The RelativeDateTime takes two DateTime objects and calculates the difference in time of both dates. This relative time difference is then used for localizing and formatting the expression in human-readable format.

How to use #

First the delegates and supported locales should be declared on your MaterialApp to enable localization for your app:

localizationsDelegates: [
  GlobalMaterialLocalizations.delegate,
  GlobalWidgetsLocalizations.delegate,
  GlobalCupertinoLocalizations.delegate,
],
// Set the supported locales according to the localizations you have
// implmented on your application.
supportedLocales: [
  const Locale('en'), // English, no country code
  const Locale('de'), // German, no country code
  const Locale('ru'), // Russian, no country code
],

To display localized and formatted dates relative to another date in human-readable format, first a RelativeDateTime object should be created:

    RelativeDateTime _relativeDateTime =
        RelativeDateTime(dateTime: DateTime.now(), other: _otherDateTime);

Next the RelativeDateFormat object can be initialized. It will enable formatting the previously created RelativeDateTime:

RelativeDateFormat _relativeDateFormatter = RelativeDateFormat(
    Localizations.localeOf(context),
);

If you want to provide your own Localizations, you can do so by passing the optional localizations argument, which contains a list of RelativeDateLocalization objects:

RelativeDateFormat _relativeDateFormatter = RelativeDateFormat(
      Localizations.localeOf(context),
      localizations: [
        RelativeDateLocalization(
          languageCode: 'en',
          timeUnitsSingular: ['second', 'minute', 'hour', 'day', 'year'],
          timeUnitsPlural: ['seconds', 'minutes', 'hours', 'days', 'years'],
          prepositionPast: 'ago',
          prepositionFuture: 'in',
          atTheMoment: 'now',
          formatOrderPast: [
            FormatComponent.value,
            FormatComponent.unit,
            FormatComponent.preposition
          ],
          formatOrderFuture: [
            FormatComponent.preposition,
            FormatComponent.value,
            FormatComponent.unit,
          ],
        )
      ],
    );

Now the RelativeDateFormat's format() method can be called, which takes the RelativeDateTime as an argument in order to format the RelativeDateTime to display the string on e.g. a Text widget:

Text(relativeDateFormatter.format(relativeDateTime))

The Example app can provide further details on implementing relative dates.

Getting Started with Flutter #

For help getting started with Flutter, view our online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.

Example #

The example folder contains an example app demonstrating the most basic implementation using a local JSON asset file.

License #

The source code of this repository is distributed under the BSD 3-Clause license as specified in the LICENSE file.

10
likes
130
pub points
80%
popularity

Publisher

unverified uploader

A Flutter package to generate relative dates to show differences in time in localized and human-readable format.

Repository

Documentation

API reference

License

BSD-3-Clause (LICENSE)

Dependencies

flutter

More

Packages that depend on lit_relative_date_time