Flutter时间格式化插件date_time_ago的使用

Flutter时间格式化插件date_time_ago的使用

特性

目前支持的语言:英语和土耳其语。

开始使用

在您的Dart页面中导入date_time_ago包:

import 'package:date_time_ago/date_time_ago.dart';

使用方法

以下是一些短小且有用的示例,供包用户参考。更长的例子可以添加到/example文件夹中。

// 创建一个对象
final dateTimeAgo = DateTimeAgo();

final dateTime = DateTime.now().subtract(const Duration(days: 1));

// 默认为土耳其语
print(dateTimeAgo.toCalculate(dateTime));

// 使用英语
print(dateTimeAgo.toCalculate(
     dateTime,
     locale: DateTimeAgoLocalesEnums.english,
   ));

完整示例代码

以下是一个完整的示例代码,展示了如何在Flutter应用中使用date_time_ago插件。

import 'package:date_time_ago/date_time_ago.dart';
import 'package:flutter/material.dart';
import 'dart:math' as math;

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  final String appTitle = 'Date Time Ago Package';

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: appTitle,
      home: const HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  const HomePage({super.key});

  [@override](/user/override)
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  final String generateButtonTitle = '生成';
  final String pageTitle = '计算日期时间差';
  
  // 导入包类
  final dateTimeAgo = DateTimeAgo();
  int randomValue = 2;
  late DateTime dateTime;
  String resultTR = '';
  String resultEn = '';

  [@override](/user/override)
  void initState() {
    setResults();
    super.initState();
  }

  void setResults() {
    dateTime = DateTime.now().subtract(Duration(days: randomValue));
    resultTR = dateTimeAgo.toCalculate(
      dateTime,
      locale: DateTimeAgoLocalesEnums.turkish,
    );
    resultEn = dateTimeAgo.toCalculate(
      dateTime,
      locale: DateTimeAgoLocalesEnums.english,
    );
  }

  void randomValueGenerated() {
    randomValue = math.Random().nextInt(100);
    setResults();
    setState(() {});
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text(pageTitle)),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(
              '土耳其语: $resultTR',
              style: Theme.of(context).textTheme.bodyLarge,
            ),
            Text(
              '英语: $resultEn',
              style: Theme.of(context).textTheme.bodyLarge,
            ),
            ElevatedButton(
              onPressed: randomValueGenerated,
              child: Text(generateButtonTitle),
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter时间格式化插件date_time_ago的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter时间格式化插件date_time_ago的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


date_time_ago 是一个用于 Flutter 的时间格式化插件,它可以将日期时间转换为相对时间(如“刚刚”、“5分钟前”、“2小时前”等)。这个插件非常适合用于社交应用、评论系统等需要显示相对时间的场景。

安装插件

首先,你需要在 pubspec.yaml 文件中添加 date_time_ago 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  date_time_ago: ^2.0.0

然后运行 flutter pub get 来安装插件。

使用插件

安装完成后,你可以在代码中使用 date_time_ago 来格式化日期时间。

基本用法

import 'package:date_time_ago/date_time_ago.dart';

void main() {
  DateTime now = DateTime.now();
  DateTime earlier = now.subtract(Duration(minutes: 10));

  String timeAgo = DateTimeAgo.timeAgo(earlier);
  print(timeAgo); // 输出: 10 minutes ago
}

自定义语言

date_time_ago 默认支持英语,但你也可以通过自定义语言来支持其他语言。

import 'package:date_time_ago/date_time_ago.dart';

void main() {
  DateTime now = DateTime.now();
  DateTime earlier = now.subtract(Duration(minutes: 10));

  // 自定义中文语言
  DateTimeAgo.setCustomLocale(CustomLocale(
    minutesAgo: (minutes) => '$minutes 分钟前',
    hoursAgo: (hours) => '$hours 小时前',
    daysAgo: (days) => '$days 天前',
    weeksAgo: (weeks) => '$weeks 周前',
    monthsAgo: (months) => '$months 月前',
    yearsAgo: (years) => '$years 年前',
    justNow: '刚刚',
  ));

  String timeAgo = DateTimeAgo.timeAgo(earlier);
  print(timeAgo); // 输出: 10 分钟前
}

支持的相对时间单位

date_time_ago 支持以下相对时间单位:

  • justNow:刚刚
  • minutesAgo:几分钟前
  • hoursAgo:几小时前
  • daysAgo:几天前
  • weeksAgo:几周前
  • monthsAgo:几个月前
  • yearsAgo:几年前

示例代码

以下是一个完整的示例,展示了如何在 Flutter 应用中使用 date_time_ago 插件:

import 'package:flutter/material.dart';
import 'package:date_time_ago/date_time_ago.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('DateTimeAgo Example'),
        ),
        body: Center(
          child: DateTimeAgoExample(),
        ),
      ),
    );
  }
}

class DateTimeAgoExample extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    DateTime now = DateTime.now();
    DateTime earlier = now.subtract(Duration(minutes: 10));

    // 自定义中文语言
    DateTimeAgo.setCustomLocale(CustomLocale(
      minutesAgo: (minutes) => '$minutes 分钟前',
      hoursAgo: (hours) => '$hours 小时前',
      daysAgo: (days) => '$days 天前',
      weeksAgo: (weeks) => '$weeks 周前',
      monthsAgo: (months) => '$months 月前',
      yearsAgo: (years) => '$years 年前',
      justNow: '刚刚',
    ));

    String timeAgo = DateTimeAgo.timeAgo(earlier);

    return Text(
      timeAgo,
      style: TextStyle(fontSize: 24),
    );
  }
}
回到顶部