replace SelectableText with SelectionArea

Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
dom
2026-07-20 13:38:56 +08:00
parent 4ce32b8698
commit 0c73e01013
26 changed files with 406 additions and 300 deletions

View File

@@ -0,0 +1,49 @@
import 'package:flutter/material.dart';
class SelectionText extends StatelessWidget {
const SelectionText(
String this.data, {
super.key,
this.style,
this.textAlign,
this.contextMenuBuilder = _defaultContextMenuBuilder,
}) : textSpan = null;
const SelectionText.rich(
InlineSpan this.textSpan, {
super.key,
this.style,
this.textAlign,
this.contextMenuBuilder = _defaultContextMenuBuilder,
}) : data = null;
final String? data;
final InlineSpan? textSpan;
final TextStyle? style;
final TextAlign? textAlign;
final SelectableRegionContextMenuBuilder? contextMenuBuilder;
static Widget _defaultContextMenuBuilder(
BuildContext context,
SelectableRegionState selectableRegionState,
) {
return AdaptiveTextSelectionToolbar.selectableRegion(
selectableRegionState: selectableRegionState,
);
}
@override
Widget build(BuildContext context) {
return SelectionArea(
contextMenuBuilder: contextMenuBuilder,
child: Text.rich(
style: style,
textAlign: textAlign,
TextSpan(
text: data,
children: textSpan != null ? <InlineSpan>[textSpan!] : null,
),
),
);
}
}