Search packages, repositories and app categories

Package detailsv3.7.0

timeago_flutter

Timeago Widget for Flutter to create fuzzy timestamps. (e.g. "15 minutes ago").

AndroidiOSWebmacOSWindowsLinux
30-day downloads
12.5K
Likes
36
Pub points
150

Install package

flutter pub add timeago_flutter

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

A Flutter package that displays human-readable, fuzzy timestamps such as '15 minutes ago' or '2 days ago'. It simplifies the presentation of date and time by automatically calculating and formatting relative time differences. Ideal for apps needing dynamic, user-friendly time labels in feeds, messages, or logs. The widget supports multiple languages and is compatible across all major platforms including mobile, web, and desktop. It integrates seamlessly with Flutter's UI system and requires minimal setup.

Use cases

  • Displaying post timestamps in social media apps
  • Showing message send times in chat interfaces
  • Updating activity logs with relative time
  • Enhancing user experience with readable time labels
  • Synchronizing real-time data with localized time formats

Key features

  • Automatic relative time calculation
  • Multi-language support
  • Cross-platform compatibility
  • Simple widget integration
  • Customizable time formatting
  • Lightweight and fast

Suitable for

  • Social media applications
  • Messaging and chat apps
  • Real-time dashboards
  • Content feeds
  • User activity tracking

Considerations

  • Requires manual language setup for non-default locales
  • May need additional configuration for precise time zones
  • Limited to relative time display (not absolute dates)
  • Not suitable for exact timestamp recording
  • Depends on underlying Dart timeago library for translations

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

timeago

timeago is a dart library that converts a date into a humanized text. Instead of showing a date 2020-12-12 18:30 with timeago you can display something like "now", "an hour ago", "~1y", etc

timeago pub package core library
timeago_flutter pub package flutter widgets

The easiest way to use this library via top-level function format(date):

import 'package:timeago/timeago.dart' as timeago;

main() {
    final fifteenAgo = DateTime.now().subtract(Duration(minutes: 15));

    print(timeago.format(fifteenAgo)); // 15 minutes ago
    print(timeago.format(fifteenAgo, locale: 'en_short')); // 15m
    print(timeago.format(fifteenAgo, locale: 'es')); // hace 15 minutos
}
IMPORTANT

timeago library ONLY includes en and es messages loaded by default.

To add more of the supported languages use timeago.setLocaleMessages(..). See locale messages.

Standard for language code

This library uses ISO 639-1 language code to identify the language. For more information see ISO 639-1.

Adding locales
timeago.setLocaleMessages('fr', timeago.FrMessages()); // Add french messages

print(timeago.format(fifteenAgo, locale: 'es')); // environ 15 minutes
Overriding locales or adding custom messages
// Override "en" locale messages with custom messages that are more precise and short
timeago.setLocaleMessages('en', MyCustomMessages());


// my_custom_messages.dart
class MyCustomMessages implements LookupMessages {
  @override String prefixAgo() => '';
  @override String prefixFromNow() => '';
  @override String suffixAgo() => '';
  @override String suffixFromNow() => '';
  @override String lessThanOneMinute(int seconds) => 'now';
  @override String aboutAMinute(int minutes) => '${minutes}m';
  @override String minutes(int minutes) => '${minutes}m';
  @override String aboutAnHour(int minutes) => '${minutes}m';
  @override String hours(int hours) => '${hours}h';
  @override String aDay(int hours) => '${hours}h';
  @override String days(int days) => '${days}d';
  @override String aboutAMonth(int days) => '${days}d';
  @override String months(int months) => '${months}mo';
  @override String aboutAYear(int year) => '${year}y';
  @override String years(int years) => '${years}y';
  @override String wordSeparator() => ' ';
}

Scope

While there are many request for adding more complex functionality I want keep this library as simple as possible to allow minimal maintenance.

The focus of this library should be

  1. Provide a single format function that transforms a date to a humanized value
  2. Give the abstractions for users to add their own languages or overriding them as they please
  3. Provide languages contributed by the community so users can add them as they need we should not add all languages by default.
  4. Library should not depend on any dependency

timeago_flutter widgets

  • Timeago
  • TimerRefresh
  • TimerRefreshWidget

Local development

  1. Install Melos (https://pub.dev/packages/melos):

dart pub global activate melos

  1. Bootstrap dependencies:

melos bootstrap

  1. Open desired package in VSCode or Webstorm

Live Demo

Here

Categories

Dependencies

Dependency list 1 items

Source repository

Projects using this package