import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:gap/gap.dart'; import 'package:go_router/go_router.dart'; import 'package:material_symbols_icons/symbols.dart'; import 'package:styled_widget/styled_widget.dart'; import 'package:surface/types/news.dart'; import 'package:surface/types/post.dart'; import 'package:surface/widgets/universal_image.dart'; class NewsFeedEntry extends StatelessWidget { final SnFeedEntry data; const NewsFeedEntry({super.key, required this.data}); @override Widget build(BuildContext context) { final ele = SnSubscriptionItem.fromJson(data.data); return InkWell( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ if (ele.thumbnail.isNotEmpty && ele.thumbnail.startsWith('http')) ClipRRect( borderRadius: BorderRadius.all(Radius.circular(8)), child: AspectRatio( aspectRatio: 16 / 9, child: Container( color: Theme.of(context).colorScheme.surfaceContainer, child: AutoResizeUniversalImage(ele.thumbnail), ), ), ).padding(horizontal: 16, bottom: 8, top: 4), Row( children: [ const Icon(Symbols.globe), const Gap(8), Expanded( child: Text( ele.title, style: Theme.of(context).textTheme.titleLarge, maxLines: 1, overflow: TextOverflow.ellipsis, ), ) ], ).padding(horizontal: 18, vertical: 4), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text(ele.description), Text(DateFormat().format(ele.createdAt.toLocal())) .tr() .fontSize(13) .opacity(0.8), ], ).padding(horizontal: 16, vertical: 4), ], ), onTap: () { GoRouter.of(context).pushNamed('readerFeedDetail', pathParameters: { 'id': ele.id.toString(), }); }, ); } }