mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-05-31 16:18:22 +08:00
fix: dynamic panel pics
This commit is contained in:
@@ -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: '动态图片',
|
||||||
),
|
),
|
||||||
]
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -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';
|
||||||
|
|||||||
Reference in New Issue
Block a user