fix: dynamic panel pics

This commit is contained in:
bggRGjQaUbCoE
2024-10-02 17:33:21 +08:00
parent 2252ece7ee
commit 5e0e51ba51
2 changed files with 10 additions and 36 deletions

View File

@@ -1,16 +1,11 @@
// 内容 // 内容
import 'package:PiliPalaX/common/widgets/imageview.dart'; import 'package:PiliPalaX/common/widgets/imageview.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:PiliPalaX/common/widgets/badge.dart';
import 'package:PiliPalaX/common/widgets/network_img_layer.dart';
import 'package:PiliPalaX/models/dynamics/result.dart';
import 'package:PiliPalaX/pages/preview/index.dart';
import 'rich_node_panel.dart'; import 'rich_node_panel.dart';
// ignore: must_be_immutable // ignore: must_be_immutable
class Content extends StatefulWidget { class Content extends StatelessWidget {
dynamic item; dynamic item;
String? source; String? source;
Content({ Content({
@@ -19,31 +14,12 @@ class Content extends StatefulWidget {
this.source, this.source,
}); });
@override
State<Content> createState() => _ContentState();
}
class _ContentState extends State<Content> {
late bool hasPics;
List<OpusPicsModel> pics = [];
@override
void initState() {
super.initState();
hasPics = widget.item.modules.moduleDynamic.major != null &&
widget.item.modules.moduleDynamic.major.opus != null &&
widget.item.modules.moduleDynamic.major.opus.pics.isNotEmpty;
if (hasPics) {
pics = widget.item.modules.moduleDynamic.major.opus.pics;
}
}
InlineSpan picsNodes() { InlineSpan picsNodes() {
return WidgetSpan( return WidgetSpan(
child: LayoutBuilder( child: LayoutBuilder(
builder: (_, constraints) => image( builder: (_, constraints) => image(
constraints.maxWidth, constraints.maxWidth,
pics (item.modules.moduleDynamic.major.opus.pics as List)
.map( .map(
(item) => ImageModel( (item) => ImageModel(
width: item.width, width: item.width,
@@ -68,17 +44,17 @@ class _ContentState extends State<Content> {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
if (widget.item.modules.moduleDynamic.topic != null) ...[ if (item.modules.moduleDynamic.topic != null) ...[
GestureDetector( GestureDetector(
child: Text( child: Text(
'#${widget.item.modules.moduleDynamic.topic.name}', '#${item.modules.moduleDynamic.topic.name}',
style: authorStyle, style: authorStyle,
), ),
), ),
], ],
IgnorePointer( IgnorePointer(
// 禁用SelectableRegion的触摸交互功能 // 禁用SelectableRegion的触摸交互功能
ignoring: widget.source == 'detail' ? false : true, ignoring: source == 'detail' ? false : true,
child: SelectableRegion( child: SelectableRegion(
magnifierConfiguration: const TextMagnifierConfiguration(), magnifierConfiguration: const TextMagnifierConfiguration(),
focusNode: FocusNode(), focusNode: FocusNode(),
@@ -86,18 +62,19 @@ class _ContentState extends State<Content> {
child: Text.rich( child: Text.rich(
/// fix 默认20px高度 /// fix 默认20px高度
style: const TextStyle(height: 0), style: const TextStyle(height: 0),
richNode(widget.item, context), richNode(item, context),
maxLines: widget.source == 'detail' ? 999 : 6, maxLines: source == 'detail' ? 999 : 6,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
), ),
), ),
), ),
if (hasPics) ...[ if (item.modules.moduleDynamic.major != null &&
item.modules.moduleDynamic.major.opus != null &&
item.modules.moduleDynamic.major.opus.pics.isNotEmpty)
Text.rich( Text.rich(
picsNodes(), picsNodes(),
// semanticsLabel: '动态图片', // semanticsLabel: '动态图片',
), ),
]
], ],
), ),
); );

View File

@@ -5,10 +5,7 @@ import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:PiliPalaX/utils/utils.dart'; import 'package:PiliPalaX/utils/utils.dart';
import '../../../common/widgets/badge.dart';
import '../../../common/widgets/network_img_layer.dart';
import '../../../models/dynamics/result.dart'; import '../../../models/dynamics/result.dart';
import '../../preview/view.dart';
import 'additional_panel.dart'; import 'additional_panel.dart';
import 'article_panel.dart'; import 'article_panel.dart';
import 'live_panel.dart'; import 'live_panel.dart';