我工作在阅读书籍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',
          ),
        ),
      ),
    );
  }
}

enter image description here

Flutter相关问答推荐

Flutter -如何从布局填充(对称水平)中排除小部件?

如何让GridView.builder用另外两个小部件来占据屏幕的剩余部分

如何在用Ffltter成功登录后重定向下一页?

Flutter 蜂巢不能正常工作,我正在使用蜂巢在设备上存储数据,但当我关闭并重新启动应用程序时,我失go 了一切

在Flutter 中更改扩展瓷砖的高度

为什么Spotify Auth API返回400,而";code_verier不正确?

导航回上一页会将我带回Ffltter应用程序中的登录页面

为什么FloatingActionButton未显示

Flutter卡内容未在水平列表视图中居中

为什么我的图标的一半在定位小部件中消失了?

Select 文本时如何更改 Flutter 中的光标 colored颜色 ?

如何使用Riverpod提供程序正确构建搜索栏?

Flutter blue plus 库,当try 从 esp32 驱动程序获取 PlatformException 时读取特性

当项目较少时收缩列表视图

如何在图像上点或(图像的一部分)在 flutter 中点击?

Future.wait() 中的 futures 可以顺序调用吗?

有什么方法可以将 ChangeNotifier 与 ValueListenableBuilder 一起使用

扫描flutter生成的二维码后如何弹出文本字段值

无法列出 com.facebook.android:facebook-login -Facebook 登录问题的版本

Flutter 在滚动期间保持某些元素固定?