我工作在阅读书籍APP中,我使文字可 Select 的文字,但问题是当我想分享 Select 的文字,有什么办法吗?
我try 在可选文本中使用onseltionChanged来捕获所选文本,但这不起作用
我工作在阅读书籍APP中,我使文字可 Select 的文字,但问题是当我想分享 Select 的文字,有什么办法吗?
我try 在可选文本中使用onseltionChanged来捕获所选文本,但这不起作用
OnSelectionChanged应该适合你,尽管每次用户更改 Select 时它都会执行,我认为这不是你想要的,但正常的事情是在上下文菜单中添加一个按钮,与你想要在你的 case 中共享的按钮.
使用上下文MenuBuilder, 注意:本例使用url_Launcher发送带有文本的短信,您需要运行
flutter pub add url_launcher
示例:
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Material App',
home: Scaffold(
appBar: AppBar(
title: const Text('Material App Bar'),
),
body: Center(
child: SelectableText(
contextMenuBuilder: (context, editableTextState) {
final TextEditingValue value = editableTextState.textEditingValue;
// Get text selected
final textSeleted = value.selection.textInside(value.text);
// Get button default of text selection
final List<ContextMenuButtonItem> buttonItems =
editableTextState.contextMenuButtonItems;
// Add new button share
buttonItems.insert(
0,
ContextMenuButtonItem(
label: 'share',
onPressed: () {
final Uri smsLaunchUri = Uri(
scheme: 'sms',
path: '011122355',
queryParameters: <String, String>{
'body': textSeleted,
},
);
// Launch sms with text selected
launchUrl(smsLaunchUri);
// Close context menu
ContextMenuController.removeAny();
},
));
return AdaptiveTextSelectionToolbar.buttonItems(
anchors: editableTextState.contextMenuAnchors,
buttonItems: buttonItems,
);
},
'Hello World text bla bla 123',
),
),
),
);
}
}