You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
3.3 KiB
96 lines
3.3 KiB
import 'package:flutter/material.dart';
|
|
import 'package:repositories/app_api_domain/models/post_model.dart';
|
|
import 'package:sonnat/core/extensions/context_extension.dart';
|
|
import 'package:sonnat/core/utils/app_constants.dart';
|
|
|
|
class PostItemWidget extends StatelessWidget {
|
|
final PostModel post;
|
|
|
|
const PostItemWidget({super.key, required this.post});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final String? thumbnail = post.thumbnail;
|
|
return Container(
|
|
padding: EdgeInsets.symmetric(
|
|
horizontal: context.width * 11 / AppConstants.instance.appWidth,
|
|
vertical: context.width * 11 / AppConstants.instance.appWidth,
|
|
),
|
|
decoration: BoxDecoration(
|
|
color: const Color(0xffffffff),
|
|
borderRadius: BorderRadius.circular(16),
|
|
),
|
|
margin: EdgeInsets.only(
|
|
left: context.width * 26 / AppConstants.instance.appWidth,
|
|
right: context.width * 26 / AppConstants.instance.appWidth,
|
|
bottom: context.height * 21 / AppConstants.instance.appHeight,
|
|
),
|
|
child: Column(
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: [
|
|
Container(
|
|
height: context.height * 174 / AppConstants.instance.appHeight,
|
|
decoration: const BoxDecoration(
|
|
borderRadius: BorderRadius.only(
|
|
topLeft: Radius.circular(16),
|
|
topRight: Radius.circular(16),
|
|
),
|
|
),
|
|
child: thumbnail == null
|
|
? Center(
|
|
child: Icon(
|
|
Icons.image_search,
|
|
color: Colors.grey.withOpacity(0.5),
|
|
size: 150,
|
|
),
|
|
)
|
|
: Image.network(
|
|
thumbnail,
|
|
fit: BoxFit.cover,
|
|
errorBuilder: (context, error, stackTrace) {
|
|
return Center(
|
|
child: Icon(
|
|
Icons.image_search,
|
|
color: Colors.grey.withOpacity(0.5),
|
|
size: 150,
|
|
),
|
|
);
|
|
},
|
|
),
|
|
),
|
|
SizedBox(height: context.height * 14 / AppConstants.instance.appHeight),
|
|
Text(
|
|
post.title,
|
|
style: const TextStyle(
|
|
color: Color(0xff222D4E),
|
|
fontSize: 16,
|
|
fontWeight: FontWeight.bold,
|
|
),
|
|
),
|
|
SizedBox(height: context.height * 8 / AppConstants.instance.appHeight),
|
|
Text(
|
|
post.summary,
|
|
style: const TextStyle(
|
|
color: Color(0xff8990A1),
|
|
fontSize: 13,
|
|
),
|
|
textAlign: TextAlign.justify,
|
|
),
|
|
SizedBox(height: context.height * 30 / AppConstants.instance.appHeight),
|
|
Align(
|
|
alignment: AlignmentDirectional.centerEnd,
|
|
child: Text(
|
|
post.publishDate,
|
|
style: const TextStyle(
|
|
color: Color(0xff8D95AB),
|
|
fontSize: 11,
|
|
fontWeight: FontWeight.bold,
|
|
),
|
|
),
|
|
),
|
|
SizedBox(height: context.height * 7 / AppConstants.instance.appHeight),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
}
|