opt: get theme color

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-04-28 21:32:30 +08:00
parent 451a84e696
commit ca993df0c6
149 changed files with 4415 additions and 4803 deletions

View File

@@ -1,16 +1,24 @@
// 内容
import 'package:PiliPlus/common/widgets/image_view.dart';
import 'package:PiliPlus/models/dynamics/result.dart';
import 'package:flutter/material.dart';
import 'rich_node_panel.dart';
Widget content(bool isSave, BuildContext context, item, source, callback) {
Widget content(
ThemeData theme,
bool isSave,
BuildContext context,
DynamicItemModel item,
String? source,
Function(List<String>, int)? callback,
) {
InlineSpan picsNodes() {
return WidgetSpan(
child: LayoutBuilder(
builder: (context, constraints) => imageView(
constraints.maxWidth,
(item.modules.moduleDynamic.major.opus.pics as List)
(item.modules.moduleDynamic!.major!.opus!.pics as List)
.map(
(item) => ImageModel(
width: item.width,
@@ -26,9 +34,7 @@ Widget content(bool isSave, BuildContext context, item, source, callback) {
);
}
TextStyle authorStyle =
TextStyle(color: Theme.of(context).colorScheme.primary);
InlineSpan? richNodes = richNode(item, context);
TextSpan? richNodes = richNode(theme, item, context);
return Container(
width: double.infinity,
@@ -36,24 +42,17 @@ Widget content(bool isSave, BuildContext context, item, source, callback) {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
if (item.modules.moduleDynamic.topic != null) ...[
GestureDetector(
child: Text(
'#${item.modules.moduleDynamic.topic.name}',
style: authorStyle,
),
if (item.modules.moduleDynamic?.topic != null) ...[
Text(
'#${item.modules.moduleDynamic!.topic!.name}',
style: TextStyle(color: theme.colorScheme.primary),
),
],
if (richNodes != null)
source == 'detail'
? SelectableRegion(
magnifierConfiguration: const TextMagnifierConfiguration(),
focusNode: FocusNode(),
selectionControls: MaterialTextSelectionControls(),
child: Text.rich(
style: TextStyle(fontSize: !isSave ? 16 : 15),
richNodes,
),
? SelectableText.rich(
richNodes,
style: TextStyle(fontSize: !isSave ? 16 : 15),
)
: Text.rich(
style: const TextStyle(fontSize: 15),
@@ -61,12 +60,8 @@ Widget content(bool isSave, BuildContext context, item, source, callback) {
maxLines: 6,
overflow: TextOverflow.ellipsis,
),
if (item.modules.moduleDynamic.major != null &&
item.modules.moduleDynamic.major.opus != null &&
item.modules.moduleDynamic.major.opus.pics.isNotEmpty)
Text.rich(
picsNodes(),
),
if (item.modules.moduleDynamic?.major?.opus?.pics?.isNotEmpty == true)
Text.rich(picsNodes()),
],
),
);