💄 Optimize nesting

This commit is contained in:
LittleSheep 2025-03-16 22:11:40 +08:00
parent 7b96013406
commit ec7650a920

View File

@ -118,6 +118,7 @@ class PostItem extends StatelessWidget {
final bool showComments; final bool showComments;
final bool showMenu; final bool showMenu;
final bool showFullPost; final bool showFullPost;
final bool showAvatar;
final bool showExpandableComments; final bool showExpandableComments;
final double? maxWidth; final double? maxWidth;
final Function(SnPost data)? onChanged; final Function(SnPost data)? onChanged;
@ -131,6 +132,7 @@ class PostItem extends StatelessWidget {
this.showComments = true, this.showComments = true,
this.showMenu = true, this.showMenu = true,
this.showFullPost = false, this.showFullPost = false,
this.showAvatar = true,
this.showExpandableComments = false, this.showExpandableComments = false,
this.maxWidth, this.maxWidth,
this.onChanged, this.onChanged,
@ -234,11 +236,12 @@ class PostItem extends StatelessWidget {
Row( Row(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
_PostAvatar( if (showAvatar)
data: data, _PostAvatar(
isCompact: false, data: data,
), isCompact: false,
const Gap(12), ),
if (showAvatar) const Gap(12),
Expanded( Expanded(
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
@ -355,26 +358,33 @@ class PostItem extends StatelessWidget {
minWidth: attachmentSize, minWidth: attachmentSize,
maxWidth: attachmentSize, maxWidth: attachmentSize,
fit: showFullPost ? BoxFit.cover : BoxFit.contain, fit: showFullPost ? BoxFit.cover : BoxFit.contain,
padding: const EdgeInsets.only(left: 60, right: 12), padding: EdgeInsets.only(left: showAvatar ? 60 : 12, right: 12),
), ),
if (data.preload?.poll != null) if (data.preload?.poll != null)
PostPoll(poll: data.preload!.poll!) PostPoll(poll: data.preload!.poll!).padding(
.padding(left: 60, right: 12, top: 12, bottom: 4), left: showAvatar ? 60 : 12,
right: 12,
top: 12,
bottom: 4,
),
if (data.body['content'] != null && if (data.body['content'] != null &&
(cfg.prefs.getBool(kAppExpandPostLink) ?? true)) (cfg.prefs.getBool(kAppExpandPostLink) ?? true))
LinkPreviewWidget( LinkPreviewWidget(
text: data.body['content'], text: data.body['content'],
).padding(left: 60, right: 4), ).padding(left: showAvatar ? 60 : 12, right: 4),
if (showExpandableComments) if (showExpandableComments)
_PostCommentIntent(data: data).padding(left: 60, right: 12) _PostCommentIntent(
data: data,
showAvatar: showAvatar,
).padding(left: showAvatar ? 60 : 12, right: 12)
else else
_PostFeaturedComment(data: data, maxWidth: maxWidth) _PostFeaturedComment(data: data, maxWidth: maxWidth)
.padding(left: 60, right: 12), .padding(left: showAvatar ? 60 : 12, right: 12),
Padding( Padding(
padding: const EdgeInsets.only(top: 4), padding: const EdgeInsets.only(top: 4),
child: _PostReactionList( child: _PostReactionList(
data: data, data: data,
padding: const EdgeInsets.only(left: 60, right: 12), padding: EdgeInsets.only(left: showAvatar ? 60 : 12, right: 12),
onChanged: _onChanged, onChanged: _onChanged,
), ),
), ),
@ -1423,7 +1433,8 @@ class _PostTruncatedHint extends StatelessWidget {
class _PostCommentIntent extends StatefulWidget { class _PostCommentIntent extends StatefulWidget {
final SnPost data; final SnPost data;
const _PostCommentIntent({required this.data}); final bool showAvatar;
const _PostCommentIntent({required this.data, this.showAvatar = false});
@override @override
State<_PostCommentIntent> createState() => _PostCommentIntentState(); State<_PostCommentIntent> createState() => _PostCommentIntentState();
@ -1473,9 +1484,10 @@ class _PostCommentIntentState extends State<_PostCommentIntent> {
for (final ele in _comments) for (final ele in _comments)
PostItem( PostItem(
data: ele, data: ele,
showAvatar: false,
showExpandableComments: true, showExpandableComments: true,
maxWidth: double.infinity, maxWidth: double.infinity,
).padding(vertical: 8), ).padding(vertical: 8, left: 6),
], ],
), ),
).padding(bottom: 8), ).padding(bottom: 8),
@ -1504,7 +1516,7 @@ class _PostCommentIntentState extends State<_PostCommentIntent> {
), ),
).padding(left: 8), ).padding(left: 8),
], ],
).opacity(0.75).padding(horizontal: 4), ).opacity(0.75).padding(horizontal: widget.showAvatar ? 4 : 0),
], ],
); );
} }