wrap static method
Widget
wrap(
- Text child, {
- bool selectAll = true,
- bool copy = true,
- MessageModel? model,
- ValueChanged<
String> ? onFavorite, - MessageCallBack? onDelete,
Implementation
static Widget wrap(Text child,
{bool selectAll = true,
bool copy = true,
MessageModel? model,
ValueChanged<String>? onFavorite,
MessageCallBack? onDelete,
MessageCallBack? onShare}) {
// 获取选择文本
String selectedText = '';
return SelectionArea(
onSelectionChanged: (SelectedContent? selectedContent) =>
selectedText = selectedContent?.plainText ?? '',
child: child,
contextMenuBuilder: (
BuildContext context,
SelectableRegionState editableTextState,
) {
bool selectAllEnable = false;
// 若还有可选的内容则展示全选菜单
if (selectedText.length < (child.data?.length ?? 0)) {
selectAllEnable = true;
}
final List<ContextMenuButtonItem> buttonItems = [
if (onFavorite != null)
ContextMenuButtonItem(
label: '收藏',
type: ContextMenuButtonType.custom,
onPressed: () {
_clear(editableTextState);
if (model != null) {
onFavorite(jsonEncode(model));
} else {
onFavorite(selectedText);
}
}),
if (selectAll && selectAllEnable)
ContextMenuButtonItem(
onPressed: () {
editableTextState.selectAll(SelectionChangedCause.toolbar);
},
label: '全选',
type: ContextMenuButtonType.selectAll),
if (copy)
ContextMenuButtonItem(
type: ContextMenuButtonType.copy,
onPressed: () {
_clear(editableTextState);
HIUtils.copyText(context, selectedText);
},
label: '复制'),
if (onDelete != null)
ContextMenuButtonItem(
label: '删除',
type: ContextMenuButtonType.delete,
onPressed: () {
_clear(editableTextState);
onDelete(model!);
}),
if (onShare != null)
ContextMenuButtonItem(
label: "转发",
type: ContextMenuButtonType.share,
onPressed: () {
_clear(editableTextState);
onShare(model!);
})
];
return AdaptiveTextSelectionToolbar.buttonItems(
buttonItems: buttonItems,
anchors: editableTextState.contextMenuAnchors);
});
}