当前位置: 首页 > news >正文

【Flutter】Flutter 使用 timego 将日期转换为时间描述

【Flutter】Flutter 使用 timego 将日期转换为时间描述

文章目录

    • 一、前言
    • 二、安装与基本使用
    • 三、如何添加新的语言
    • 四、如何覆盖现有的语言或添加自定义消息
    • 五、完整示例
    • 六、总结

一、前言

你好!我是小雨青年,今天我要为你介绍一个非常实用的 Flutter 包——timeago。这个包的主要功能是将日期转换为我们常说的模糊时间戳,例如 “15 分钟前” 或 “现在”。在本文中,我将手把手地教你如何使用这个包,并为你提供一些实际的业务示例。希望你能够通过这篇文章,更好地理解和使用 timeago

重点内容:

  • 安装和基本使用 timeago
  • 如何为 timeago 添加新的语言。
  • 如何自定义或覆盖现有的语言消息。
  • 提供一个完整的业务示例。

软件版本说明:Flutter 3.10, Dart 3.0, timeago 3.5.0。

你是否对成为 Flutter 高手充满渴望,想要掌握更多前沿技巧和最佳实践?现在,你的机会来了!

🚀 Flutter 从零到一:基础入门到应用上线全攻略 正在热烈招募参与者!

✅ 这个专栏不仅包括了全面的 Flutter 学习资源,还有实用的代码示例和深入的解析教程。
✅ 专栏内容会持续更新,价格也会随之上涨。现在加入,享受最优惠的价格,抓住属于你的机会!
✅ 想要与其他 Flutter 学习者互动交流吗?点击这里 加入我们的讨论群,一起成长、一起进步。

别再等待,让我们今天就启程,共同开启 Flutter 的精彩学习之旅吧!

二、安装与基本使用

首先,我们需要在 pubspec.yaml 文件中添加 timeago 包的依赖:

dependencies:timeago: ^3.5.0

然后,运行 flutter pub get 命令来安装这个包。

使用 timeago 非常简单。你只需要导入它,并使用 format(date) 函数即可。下面是一个简单的示例:

import 'package:timeago/timeago.dart' as timeago;void main() {final fifteenAgo = DateTime.now().subtract(Duration(minutes: 15));print(timeago.format(fifteenAgo)); // 输出:15 分钟前
}

在这个示例中,我们创建了一个 15 分钟前的日期,并使用 timeago 将其转换为 “15 分钟前”。

三、如何添加新的语言

默认情况下,timeago 只包括英文和西班牙文的消息。但是,如果你想使用其他语言,可以很容易地添加它。例如,要添加法语,你可以这样做:

timeago.setLocaleMessages('fr', timeago.FrMessages());

然后,你可以使用 locale 参数来指定你想使用的语言:

print(timeago.format(fifteenAgo, locale: 'fr')); // 输出法语的 "15 分钟前"

四、如何覆盖现有的语言或添加自定义消息

有时,我们可能不满意 timeago 默认提供的语言消息,或者我们可能想要自定义某些消息。幸运的是,timeago 提供了这样的功能。

例如,我们可以创建一个自定义的英文消息类,使其更加简洁:

class MyCustomMessages implements timeago.LookupMessages { String lessThanOneMinute(int seconds) => '现在'; String aboutAMinute(int minutes) => '${minutes} 分'; String minutes(int minutes) => '${minutes} 分';// ... 其他自定义消息
}// 使用自定义消息
timeago.setLocaleMessages('en', MyCustomMessages());

在上面的示例中,我们创建了一个自定义的英文消息类,并使用 setLocaleMessages 方法将其设置为默认的英文消息。

五、完整示例

现在,让我们来看一个实际业务中的完整示例。假设我们正在开发一个社交应用,我们想在用户的帖子下显示距离现在的时间。

import 'package:flutter/material.dart';
import 'package:timeago/timeago.dart' as timeago;void main() => runApp(MyApp());class MyApp extends StatelessWidget {Widget build(BuildContext context) {return MaterialApp(home: PostPage(),);}
}class PostPage extends StatelessWidget {final DateTime postTime = DateTime.now().subtract(Duration(hours: 5));Widget build(BuildContext context) {// 设置中文语言timeago.setLocaleMessages('zh_CN', timeago.ZhCnMessages());return Scaffold(appBar: AppBar(title: Text('帖子')),body: Column(children: [Text('这是一个很棒的帖子!'),Text(timeago.format(postTime, locale: 'zh_CN')), // 这里使用了中文的 locale],),);}
}

在这个示例中,我们创建了一个简单的 Flutter 应用,显示了一个帖子和它的发布时间。

运行结果如下:

六、总结

timeago 是一个非常实用的 Flutter 包,它可以帮助我们轻松地将日期转换为模糊的时间戳。无论你是一个 Flutter 初学者还是一个有经验的开发者,我都强烈建议你尝试使用这个包。希望这篇文章能帮助你更好地理解和使用 timeago

对 Flutter 感兴趣,渴望深入探索和学习吗?Flutter 从零到一:基础入门到应用上线全攻略 正是你的完美起点!

📘 在这个专栏中,你将发现丰富的 Flutter 学习资源,从代码示例到深入的技术解读,一应俱全。
🛠️ 想要了解如何用 Flutter 构建出色的应用吗?所有的秘诀和答案都在我们的专栏里等着你!
💰 别再犹豫,专栏内容将不断更新,价格也将逐渐上涨。现在就加入,享受最优惠的价格,开启你的 Flutter 探索之旅!

想了解更多?点击这里查看 Flutter Developer 101:入门小册 & 专栏指引

👥 还有,别忘了点击这里 加入我们的讨论群,与其他 Flutter 爱好者一起交流和学习,共同成长!

相关文章:

【Flutter】Flutter 使用 timego 将日期转换为时间描述

【Flutter】Flutter 使用 timego 将日期转换为时间描述 文章目录 一、前言二、安装与基本使用三、如何添加新的语言四、如何覆盖现有的语言或添加自定义消息五、完整示例六、总结 一、前言 你好!我是小雨青年,今天我要为你介绍一个非常实用的 Flutter 包…...

并发容器11

一 JDK 提供的并发容器总结 JDK 提供的这些容器大部分在 java.util.concurrent 包中。 ConcurrentHashMap: 线程安全的 HashMap CopyOnWriteArrayList: 线程安全的 List,在读多写少的场合性能非常好,远远好于 Vector. ConcurrentLinkedQueue: 高效的并…...

Java8实战-总结22

Java8实战-总结22 使用流数值流原始类型流特化数值范围数值流应用:勾股数 使用流 数值流 可以使用reduce方法计算流中元素的总和。例如,可以像下面这样计算菜单的热量: int calories menu.stream().map(Dish::getcalories).reduce(0, Int…...

matlab 实现点云ICP 配准算法

一、算法步骤 (1)在目标点云P中取点集pi∈P; (2)找出源点云Q中的对应点集qi∈Q,使得||qi-pi||=min; (3)计算旋转矩阵R和平移矩阵t,使得误差函数最小; (4)对pi使用上一步求得的旋转矩阵R和平移矩阵t进行旋转和平移变换,的到新的对应点集pi’={pi’=Rpi+t,pi∈P};…...

python提取word文本和word图片

提取文本 docx只支持docx格式,所以如果想读取doc需要另存为docx格式即可 import docx # pip3 install python-docx doc docx.Document(three.docx) for paragraph in doc.paragraphs:print(paragraph.text)提取图片 import zipfile import os, re # docx本质上…...

iOS开发Swift-9-SFSymbols,页面跳转,view屏幕比例,启动页-和风天气AppUI

1.创建项目 2.设置好测试机型,App显示名称,以及关闭横向展示. 3.下载SF Symbols. https://developer.apple.com/sf-symbols/ 右上角搜索 search ,可以找到很多系统自带图标.选择喜欢的图标,拷贝图标的名字. 插入一个Button,在Image中粘贴图标名称并选择,即可将Button变成想要的…...

代码优化工具-测试程序执行时间-IDEAdebug+StopWatch

参考: [技巧]IDEA的debugStopWatch监测程序运行时间 添加链接描述 1创建类StopWatchExpand import lombok.extern.slf4j.Slf4j;import org.springframework.util.StopWatch;import java.text.NumberFormat;/*** 检测程序片段运行时间拓展** author sdevil507* cr…...

力扣每日一题---2594. 修车的最少时间

文章目录 思路解题方法复杂度Code 思路 请注意&#xff0c;能力值越低&#xff0c;修车越快&#xff0c;应该翻译成「排名」&#xff0c;排名越靠前&#xff0c;修车越快。&#xff09;根据题意可以知道r * n * n < t 的&#xff0c;所以可以利用数学知识进行改变公式&#…...

【jvm】运行时数据区

目录 一、运行时数据区一、作用二、说明三、线程共用与私有区域 一、运行时数据区 一、作用 1.内存是非常重要的系统资源&#xff0c;是硬盘和CPU 的中间仓库及桥梁&#xff0c;承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策…...

SpringMVC相对路径和绝对路径

1.相对地址与绝对地址定义 在jsp&#xff0c;html中使用的地址&#xff0c;都是在前端页面中的地址&#xff0c;都是相对地址 地址分类&#xff1a;&#xff08;1&#xff09;&#xff0c;绝对地址&#xff0c;带有协议名称的是绝对地址&#xff0c;http://www.baidu.com&…...

IIS perl python cbrother php脚本语言配置及简单测试样例程序

上篇笔记写了 IIS 配置 CGI&#xff0c; IIS CGI配置和CGI程序FreeBasic, VB6, VC 简单样例_Mongnewer的博客-CSDN博客 这篇在IIS上配置一些脚本语言。为了操作方便&#xff0c;每种语言在站点下分设文件夹。 1. IIS perl配置 Perl CGI方式是曾经流行的做法。先下载一个开源…...

Oracle Scheduler中日期表达式和PLSQL表达式的区别

参考文档&#xff1a; Database Administrator’s Guide 29.4.5.4 Differences Between PL/SQL Expression and Calendaring Syntax Behavior There are important differences in behavior between a calendaring expression and PL/SQL repeat interval. These differenc…...

Java设计模式:一、六大设计原则-06:依赖倒置原则

文章目录 一、定义&#xff1a;依赖倒置原则二、模拟场景&#xff1a;依赖倒置原则三、违背方案&#xff1a;依赖倒置原则3.1 工程结构3.2 抽奖系统**3.2.1 定义抽奖用户类**3.2.2 抽奖控制 3.3 单元测试 四、改善代码&#xff1a;依赖倒置原则4.1 工程结构4.2 抽奖控制改善4.2…...

信息系统数据同步解决方案

实施数据同步解决方案时&#xff0c;重要的是确保数据同步是安全的、可靠的&#xff0c;并且能够适应系统变化。定期测试和监控数据同步过程&#xff0c;以确保其稳定运行&#xff0c;并随着需求的变化进行适当的调整和优化。 应用场景&#xff1a;信息系统A和信息系统B实现员…...

LRU算法 vs Redis近似LRU算法

LRU(Least Recently Use)算法&#xff0c;是用来判断一批数据中&#xff0c;最近最少使用算法。它底层数据结构由Hash和链表结合实现&#xff0c;使用Hash是为了保障查询效率为O(1)&#xff0c;使用链表保障删除元素效率为O(1)。 LRU算法是用来判断最近最少使用到元素&#xf…...

浅析ARMv8体系结构:异常处理机制

文章目录 概述异常类型中断终止Abort复位Reset系统调用 异常处理流程异常入口异常返回异常返回地址 堆栈选择 异常向量表异常向量表的配置 同步异常解析相关参考 概述 异常处理指的是处理器在运行过程中发生了外部事件&#xff0c;导致处理器需要中断当前执行流程转而去处理异…...

Golang开发--Goroutine的使用

Go 语言天生支持并发编程&#xff0c;提供了丰富的原语和工具来编写并发程序。Goroutine 是 Go 语言中的轻量级执行单位。它们是由 Go 运行时&#xff08;runtime&#xff09;管理的&#xff0c;并且能够在单个线程上运行成千上万个 Goroutine。创建 Goroutine 非常高效&#x…...

【Linux】package ‘python-yaml‘ has no installation candidate 如何解决

要解决此问题&#xff0c;可以尝试以下几个步骤&#xff1a; 确保系统已经更新到最新版本。可以使用以下命令进行系统更新&#xff1a; sudo apt update sudo apt upgrade确保您的软件源列表中包含了正确的软件源。可以使用以下命令编辑软件源列表&#xff1a; sudo nano /etc/…...

Selector选择器在AspNetCore中的用法

Selector选择器在AspNetCore中的用法 背景 项目编辑过程中会选择其所属的上级项目&#xff0c;而上级项目在数据结构中是以ParentID的方式表达&#xff0c;而非Project类型&#xff0c;用户不会记录也不应该记录ID值&#xff0c;因此应提供Selector项目下拉框供用户选择。 但…...

anaconda3最新版安装|使用详情|Error: Please select a valid Python interpreter

Win11查看安装的Python路径及安装的库 anaconda3最新版安装|使用详情|Error: Please select a valid Python interpreter 介绍开源包管理系统和环境管理系统 &#xff0c;包括多种语言的包安装&#xff0c;运行&#xff0c;更新&#xff0c;删除&#xff0c;最重要的是可以解…...

java八股文面试[多线程]——锁的分类

1.1 可重入锁、不可重入锁 Java中提供的synchronized&#xff0c;ReentrantLock&#xff0c;ReentrantReadWriteLock都是可重入锁。 重入&#xff1a;当前线程获取到A锁&#xff0c;在获取之后尝试再次获取A锁是可以直接拿到的。 不可重入&#xff1a;当前线程获取到A锁&…...

儿童安全门和围栏,以及游戏围栏等美国站要求的合规标准是什么?

儿童安全门和围栏 儿童安全门和围栏用于在门口&#xff08;如门道&#xff09;内设置围栏&#xff0c;或用作自支撑围栏&#xff0c;将幼儿可能在其中活动的区域围起来。这些商品可能由塑料、金属、乙烯树脂或木制组件等材料制成。此政策包括但不限于可扩展围栏、伸缩安全门和…...

kafka配合ElasticStack技术栈的搭配使用

今日内容: - kafka生产环境调优; - kafka配合ElasticStack技术栈的搭配使用; - zookeeper集群部署; - zookeeper的ACL; - zookeeper的调优; - PB级别项目; - ES8集群搭建/elk; (待定...) 订阅1个的topic: 老男孩: 10 多个不同的主题…...

对极几何与三角化求3D空间坐标

一&#xff0c;使用对极几何约束求R,T 第一步&#xff1a;特征匹配。提取出有效的匹配点 void find_feature_matches(const Mat &img_1, const Mat &img_2,std::vector<KeyPoint> &keypoints_1,std::vector<KeyPoint> &keypoints_2,std::vector&l…...

英语语法笔记

1.英语五大句型 主谓&#xff08;主语动词&#xff09; 主谓宾&#xff08;主语动词宾语&#xff09; 主谓宾宾&#xff08;主语动词简接宾语直接宾语&#xff09; 主谓宾补&#xff08;主语动词宾语宾语补语&#xff09; 主系表&#xff08;主语系动词主语补语&#xff09; 1…...

ES6的面向对象编程以及ES6中的类和对象

一、面向对象 1、面向对象 &#xff08;1&#xff09;是一种开发思想&#xff0c;并不是具体的一种技术 &#xff08;2&#xff09;一切事物均为对象&#xff0c;在项目中主要是对象的分工协作 2、对象的特征 &#xff08;1&#xff09;对象是属性和行为的结合体 &#x…...

ConfigMaps in K8s

摘要 ConfigMaps是Kubernetes&#xff08;K8s&#xff09;中用于存储应用程序配置信息的一种资源对象。它将key-value对存储为Kubernetes集群中的一个资源&#xff0c;并可以在Pod中以卷或环境变量的形式使用。 ConfigMaps的设计目的是将应用程序配置与应用程序本身解耦。它可…...

《机器人学一(Robotics(1))》_台大林沛群 第 6 周 【轨迹规划_直线转折处抛物线平滑】Quiz 6

步骤&#xff1a; 1、 编程 将PPT 的例子 跑一遍&#xff0c; 确保代码无误 2、根据题目 修改 相关参数 文章目录 求解代码_Python 解决的问题&#xff1a; 线段间转折点 的 速度 不连续 解决方法&#xff1a; 将直线段 两端 修正为 二次方程式 二次项圆滑 求解代码_Python …...

关于vscode的GitLens插件里的FILE HISTORY理解

最近在用vscode的GitLens插件开发项目遇到这个疑问&#xff0c;先看图&#xff1a; 每当我点击FILE HISTORY 一个commit时&#xff0c;正常来说显示器会自动将点击的提交版本和它上一个提交版本进行比较&#xff0c;如果单纯这么理解的话就错了&#xff0c;因为GitLens的File …...

通过idea实现springboot集成mybatys

概述 使用springboot 集成 mybatys后&#xff0c;通过http请求接口&#xff0c;使得通过http请求可以直接直接操作数据库&#xff1b; 完成后端功能框架&#xff1b;前端是准备上小程序&#xff0c;调用https的请求接口用。简单实现后端框架&#xff1b; 详细 springboot 集…...

无锡建设网站/疫情最新资讯

CefSharp在NuGet的简介是“The CefSharp Chromium-based browser component”&#xff0c;机翻的意思就是“基于Cefsharp Chromium的浏览器组件” 请注意本文不会有太多功能的详细介绍&#xff0c;只有实现相关需求的基本功能 请注意本次使用CefSharp版本为57.0.0&#xff0c;最…...

做相册网站logo/网推怎么做

转载于:https://www.cnblogs.com/6DAN_HUST/archive/2013/06/02/3114323.html...

wordpress修改成中文/网站制作公司咨询

大家好&#xff0c;我是脚丫先生 (o^^o) 说起&#xff0c;android&#xff0c;这是多么遥远的英文单词。 「第一行代码」 我想学过android开发的小伙伴都应该读过&#xff0c;可谓是入门神作。 看着郭霖大佬的大作&#xff0c;此刻&#xff0c;有那么带点陌生而又带一丝熟悉…...

手机网站建设是什么/百度一下你就知道手机版官网

本文主要总结线程共享数据的相关知识&#xff0c;主要包括两方面:一是某个线程内如何共享数据&#xff0c;保证各个线程的数据不交叉&#xff1b;一是多个线程间如何共享数据&#xff0c;保证数据的一致性。线程范围内共享数据自己实现的话&#xff0c;是定义一个Map,线程为键&…...

做网站上传的图片大小/百度关键词查询工具

本发明涉及电机控制领域&#xff0c;尤其涉及一种电机h桥制动电路。背景技术&#xff1a;电动立柱的电机控制一般有两种&#xff0c;一种是h桥的四个开关管控制一个电机的正反转和转速&#xff1b;另一种是通过两个继电器控制电机的正反转&#xff0c;一个开关管控制电机的转速…...

其它类型的定制营销型网站/成都关键词seo推广平台

1、http://gutou9.iteye.com/blog/281776 2、http://www.iteye.com/topic/480432...