搜索插件、代码仓与 APP 分类

插件详情v3.7.0

timeago_flutter

Flutter 的 Timeago 小部件,用于创建模糊时间戳。(例如:“15 分钟前”)

AndroidiOSWebmacOSWindowsLinux
近 30 天下载
1.3万
喜欢数
36
Pub 分数
150

安装插件

flutter pub add timeago_flutter

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

一个 Flutter 包,可显示人类可读的模糊时间戳,例如“15 分钟前”或“2 天前”。它通过自动计算和格式化相对时间差,简化了日期和时间的展示。适用于需要在动态、用户友好的时间标签中显示时间的应用程序,如信息流、消息或日志。该组件支持多种语言,并可在所有主要平台(包括移动、Web 和桌面)上兼容。它与 Flutter 的 UI 系统无缝集成,设置简单。

适合场景

  • 在社交媒体应用中显示帖子时间戳
  • 在聊天界面中显示消息发送时间
  • 使用相对时间更新活动日志
  • 通过可读的时间标签提升用户体验
  • 将实时数据与本地化时间格式同步

主要特点

  • 自动相对时间计算
  • 多语言支持
  • 跨平台兼容性
  • 简单小部件集成
  • 可自定义的时间格式化
  • 轻量且快速

适合对象

  • 社交媒体应用
  • 消息和聊天应用
  • 实时仪表板
  • 内容源
  • 用户活动跟踪

使用建议

  • 需要为非默认区域设置手动设置语言
  • 可能需要额外配置以精确设置时区
  • 仅限相对时间显示(不包括绝对日期)
  • 不适用于精确时间戳记录
  • 依赖底层 Dart timeago 库进行翻译

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

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

所属分类

依赖

依赖清单 1 项

源码仓库

使用此插件的项目