mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-07-23 03:50:09 +08:00
opt dyn/reply text menu
Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
import 'package:PiliPlus/common/style.dart';
|
||||
import 'package:PiliPlus/common/widgets/gesture/tap_gesture_recognizer.dart';
|
||||
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
|
||||
import 'package:PiliPlus/common/widgets/scroll_physics.dart'
|
||||
show NeverSelectableScrollPhysics;
|
||||
import 'package:PiliPlus/http/dynamics.dart';
|
||||
import 'package:PiliPlus/http/loading_state.dart';
|
||||
import 'package:PiliPlus/models/dynamics/result.dart';
|
||||
@@ -698,6 +700,7 @@ additional panel error
|
||||
id: $idStr
|
||||
type: $type
|
||||
err: $e''',
|
||||
scrollPhysics: const NeverSelectableScrollPhysics(),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,13 +1,21 @@
|
||||
// 内容
|
||||
import 'package:PiliPlus/common/widgets/custom_icon.dart';
|
||||
import 'package:PiliPlus/common/widgets/flutter/text/text.dart' as custom_text;
|
||||
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
|
||||
import 'package:PiliPlus/common/widgets/image_grid/image_grid_view.dart';
|
||||
import 'package:PiliPlus/common/widgets/scroll_physics.dart'
|
||||
show ClampingScrollPhysicsExt, NeverSelectableScrollPhysics;
|
||||
import 'package:PiliPlus/models/dynamics/result.dart';
|
||||
import 'package:PiliPlus/pages/dynamics/widgets/rich_node_panel.dart';
|
||||
import 'package:PiliPlus/utils/extension/editable_text_ext.dart';
|
||||
import 'package:PiliPlus/utils/extension/iterable_ext.dart';
|
||||
import 'package:PiliPlus/utils/page_utils.dart';
|
||||
import 'package:collection/collection.dart' show IterableExtension;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
part 'package:PiliPlus/common/widgets/context_menu/dyn_menu_helper.dart';
|
||||
|
||||
Widget content(
|
||||
BuildContext context, {
|
||||
required int floor,
|
||||
@@ -77,7 +85,12 @@ Widget content(
|
||||
: const TextStyle(fontSize: 16),
|
||||
contextMenuBuilder: text == null || text.isEmpty
|
||||
? null
|
||||
: (_, state) => _contextMenuBuilder(state, text),
|
||||
: (_, state) => dynTextMenuBuilder(
|
||||
state,
|
||||
text,
|
||||
item.modules.moduleDynamic,
|
||||
),
|
||||
scrollPhysics: const NeverSelectableScrollPhysics(),
|
||||
)
|
||||
: custom_text.Text.rich(
|
||||
style: floor == 1
|
||||
@@ -106,28 +119,3 @@ Widget content(
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _contextMenuBuilder(EditableTextState state, String text) {
|
||||
return AdaptiveTextSelectionToolbar.buttonItems(
|
||||
buttonItems: state.contextMenuButtonItems
|
||||
..add(
|
||||
ContextMenuButtonItem(label: '文本', onPressed: () => _onCopyText(text)),
|
||||
),
|
||||
anchors: state.contextMenuAnchors,
|
||||
);
|
||||
}
|
||||
|
||||
void _onCopyText(String text) {
|
||||
showDialog(
|
||||
context: Get.context!,
|
||||
builder: (context) => Dialog(
|
||||
child: Padding(
|
||||
padding: const .symmetric(horizontal: 20, vertical: 16),
|
||||
child: SelectableText(
|
||||
text,
|
||||
style: const TextStyle(fontSize: 15, height: 1.7),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ TextSpan? richNode(
|
||||
}) {
|
||||
try {
|
||||
late final style = TextStyle(color: theme.colorScheme.primary);
|
||||
List<InlineSpan> spanChildren = [];
|
||||
final List<InlineSpan> spanChildren = [];
|
||||
|
||||
final moduleDynamic = item.modules.moduleDynamic;
|
||||
List<RichTextNodeItem>? richTextNodes;
|
||||
|
||||
Reference in New Issue
Block a user