返回
Flutter 入门教程——山寨掘金(二)
IOS
2024-02-15 00:06:04
掘金发现页:实现与时间差计算
构建发现页
掘金应用的核心页面之一是发现页,它展示着平台上最新的文章和动态。要实现发现页,首先需要创建一个新的页面,在 lib/pages
文件夹下创建名为 discovery_page.dart
的新文件。
import 'package:flutter/material.dart';
class DiscoveryPage extends StatefulWidget {
@override
_DiscoveryPageState createState() => _DiscoveryPageState();
}
class _DiscoveryPageState extends State<DiscoveryPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('发现'),
),
body: Center(
child: Text('发现页'),
),
);
}
}
将发现页添加到应用程序中,在 lib/main.dart
文件中进行以下操作:
...
import 'package:flutter_掘金/pages/discovery_page.dart';
...
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
...
home: DiscoveryPage(),
);
}
}
运行应用程序即可查看发现页。
计算文章发布时间与当前时间的差值
为了在发现页中显示文章发布时间与当前时间的差值,我们需要创建一个工具。在 lib/utils
文件夹下创建一个名为 count_time.dart
的新文件,编写时间差计算代码:
import 'package:flutter/material.dart';
class CountTime {
static String countTime(String time) {
DateTime dateTime = DateTime.parse(time);
DateTime now = DateTime.now();
Duration difference = now.difference(dateTime);
if (difference.inDays > 0) {
return '${difference.inDays}天前';
} else if (difference.inHours > 0) {
return '${difference.inHours}小时前';
} else if (difference.inMinutes > 0) {
return '${difference.inMinutes}分钟前';
} else {
return '刚刚';
}
}
}
在发现页中使用此工具:
...
import 'package:flutter_掘金/utils/count_time.dart';
...
class _DiscoveryPageState extends State<DiscoveryPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
...
body: Center(
child: Text(CountTime.countTime('2023-03-08 12:00:00')),
),
);
}
}
现在运行应用程序,即可查看计算出的文章发布时间与当前时间的差值。
总结
我们已经成功实现掘金发现页,并引入了计算文章发布时间与当前时间差值的实用工具。在后续部分中,我们将进一步扩展掘金应用,实现更多功能。
常见问题解答
- 如何为其他文章计算时间差?
使用 CountTime
工具并传入文章的发布时间即可。
- 如何在发现页中显示文章列表?
这将需要从服务器获取文章数据,并在列表视图中显示它们。
- 可以自定义时间差显示格式吗?
可以,编辑 CountTime
工具中用于格式化时间差的代码。
- 发现页是否支持其他功能?
是的,例如搜索、排序和过滤。
- 如何在应用程序中导航到发现页?
使用 Navigator
类来推送发现页的路由。