73 lines
2.1 KiB
Dart
73 lines
2.1 KiB
Dart
import 'package:collection/collection.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:gap/gap.dart';
|
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|
import 'package:island/models/post.dart';
|
|
import 'package:island/widgets/post/post_shared.dart';
|
|
|
|
class PostItemScreenshot extends ConsumerWidget {
|
|
final SnPost item;
|
|
final EdgeInsets? padding;
|
|
final bool isFullPost;
|
|
final bool isShowReference;
|
|
const PostItemScreenshot({
|
|
super.key,
|
|
required this.item,
|
|
this.padding,
|
|
this.isFullPost = false,
|
|
this.isShowReference = true,
|
|
});
|
|
|
|
@override
|
|
Widget build(BuildContext context, WidgetRef ref) {
|
|
final renderingPadding =
|
|
padding ?? const EdgeInsets.symmetric(horizontal: 8, vertical: 8);
|
|
|
|
final mostReaction =
|
|
item.reactionsCount.isEmpty
|
|
? null
|
|
: item.reactionsCount.entries
|
|
.sortedBy((e) => e.value)
|
|
.map((e) => e.key)
|
|
.last;
|
|
|
|
return Column(
|
|
mainAxisSize: MainAxisSize.min,
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: [
|
|
PostHeader(
|
|
item: item,
|
|
isFullPost: isFullPost,
|
|
isInteractive: false,
|
|
renderingPadding: renderingPadding,
|
|
trailing:
|
|
mostReaction != null
|
|
? Row(
|
|
children: [
|
|
Text(
|
|
kReactionTemplates[mostReaction]?.icon ?? '',
|
|
style: const TextStyle(fontSize: 20),
|
|
),
|
|
const Gap(4),
|
|
Text(
|
|
'x${item.reactionsCount[mostReaction]}',
|
|
style: const TextStyle(fontSize: 11),
|
|
),
|
|
],
|
|
)
|
|
: null,
|
|
),
|
|
PostBody(
|
|
item: item,
|
|
renderingPadding: renderingPadding,
|
|
isFullPost: isFullPost,
|
|
isTextSelectable: false,
|
|
isInteractive: false,
|
|
),
|
|
if (isShowReference)
|
|
ReferencedPostWidget(item: item, isInteractive: false),
|
|
],
|
|
);
|
|
}
|
|
}
|