import 'package:didvan/models/news_overview.dart'; import 'package:didvan/models/requests/news.dart'; import 'package:didvan/routes/routes.dart'; import 'package:didvan/utils/date_time.dart'; import 'package:didvan/widgets/bookmark_button.dart'; import 'package:didvan/widgets/didvan/card.dart'; import 'package:didvan/widgets/didvan/divider.dart'; import 'package:didvan/widgets/didvan/text.dart'; import 'package:didvan/widgets/skeleton_image.dart'; import 'package:flutter/material.dart'; class NewsOverview extends StatelessWidget { final NewsOverviewData news; final NewsRequestArgs? newsRequestArgs; final void Function(int id, bool value) onMarkChanged; const NewsOverview({ Key? key, required this.news, required this.onMarkChanged, this.newsRequestArgs, }) : super(key: key); @override Widget build(BuildContext context) { return DidvanCard( onTap: () => Navigator.of(context).pushNamed( Routes.newsDetails, arguments: { 'onMarkChanged': onMarkChanged, 'id': news.id, 'args': newsRequestArgs, }, ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ SkeletonImage( imageUrl: news.image, width: 64, height: 64, ), const SizedBox(width: 8), Expanded( child: SizedBox( height: 64, child: DidvanText( news.title, style: Theme.of(context).textTheme.bodyText1, ), ), ), ], ), const SizedBox(height: 8), DidvanText( news.description, maxLines: 3, ), const DidvanDivider(verticalPadding: 8), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Row( children: [ DidvanText( news.reference, style: Theme.of(context).textTheme.caption, ), DidvanText( ' - ' + DateTimeUtils.momentGenerator(news.createdAt), style: Theme.of(context).textTheme.caption, ), ], ), BookmarkButton( value: news.marked, onMarkChanged: (value) => onMarkChanged(news.id, value), ), ], ), ], ), ); } }