You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何实现点击TextButton.icon复制字段内容到剪贴板

Flutter 点击TextButton.icon复制内容到剪贴板实现方案

不需要引入任何第三方依赖,直接用Flutter SDK内置的剪贴板API即可完成,步骤如下:

  • 首先在对应 dart 文件头部引入系统服务包:import 'package:flutter/services.dart';
  • 编写复制逻辑:调用Clipboard.setData方法,把需要复制的字段内容封装成ClipboardData对象传入即可,可按需添加复制成功的轻提示
  • 在TextButton.icon的onPressed回调中触发上述复制逻辑即可

完整可运行示例代码

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

class CopyDemo extends StatelessWidget {
  // 这里替换成你需要复制的特定字段值,比如订单号、用户ID、分享链接等
  final String needCopyContent = "https://example.com/invite?code=89757";
  const CopyDemo({super.key});

  void _copyToClipboard() async {
    // 写入剪贴板核心逻辑
    await Clipboard.setData(ClipboardData(text: needCopyContent));
    // 可选:弹出复制成功提示,不需要可以直接删除这段
    final messenger = ScaffoldMessenger.maybeOf(context);
    if (messenger != null) {
      messenger.showSnackBar(
        const SnackBar(
          content: Text("内容已复制"),
          duration: Duration(seconds: 1),
        ),
      );
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        // 目标按钮组件
        child: TextButton.icon(
          onPressed: _copyToClipboard,
          icon: const Icon(Icons.copy_rounded),
          label: const Text("复制分享链接"),
        ),
      ),
    );
  }
}

注意事项

  • 仅执行写入剪贴板操作时,不需要在安卓、iOS端额外配置权限,如果涉及读取剪贴板内容,才需要适配高版本系统的权限申请规则
  • 弹出提示前先通过ScaffoldMessenger.maybeOf(context)判断上下文是否有效,避免用户点击按钮后立刻退出页面导致的上下文不存在报错
  • 普通文本复制只需要给ClipboardData传text参数即可,如果需要复制富文本、媒体等特殊格式内容,可按需传入其他格式字段

内容的提问来源于stack exchange,提问作者Bhavik Dalal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 05:09:31