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

Flutter 如何实现点击按钮后将剪切板内容粘贴到Text组件上

Flutter读取系统剪贴板并展示的实现方案

前置准备

无需引入第三方依赖,Flutter官方的services库已自带剪贴板操作能力,只需在文件头部导入对应包:
import 'package:flutter/services.dart';

核心实现逻辑

  • 定义一个可更新的状态变量,用来存储读取到的剪贴板文本内容
  • 为按钮配置点击回调,在回调中调用Clipboard.getData方法读取纯文本格式的剪贴板内容
  • 读取成功后更新状态变量,UI会自动刷新将内容展示在Text组件上

完整可运行示例代码

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

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text("剪贴板读取示例")),
        body: const ClipboardDemo(),
      ),
    );
  }
}

class ClipboardDemo extends StatefulWidget {
  const ClipboardDemo({super.key});

  @override
  State<ClipboardDemo> createState() => _ClipboardDemoState();
}

class _ClipboardDemoState extends State<ClipboardDemo> {
  // 存储读取到的剪贴板内容
  String? _pastedText;

  // 读取剪贴板的方法
  Future<void> _getClipboardContent() async {
    // 读取剪贴板中的纯文本内容
    ClipboardData? clipboardData = await Clipboard.getData(Clipboard.kTextPlain);
    if (clipboardData != null && clipboardData.text != null) {
      setState(() {
        _pastedText = clipboardData.text;
      });
    } else {
      setState(() {
        _pastedText = "剪贴板中无文本内容";
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.all(20),
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          ElevatedButton(
            onPressed: _getClipboardContent,
            child: const Text("点击读取剪贴板内容"),
          ),
          const SizedBox(height: 30),
          const Text("读取到的剪贴板内容:"),
          const SizedBox(height: 10),
          Text(
            _pastedText ?? "暂未读取内容",
            style: const TextStyle(fontSize: 16, color: Colors.black87),
          ),
        ],
      ),
    );
  }
}

注意事项

  • 该方法仅支持读取纯文本格式的剪贴板内容,如果你需要读取图片、文件等其他格式内容,需要针对不同平台单独实现适配逻辑
  • 部分系统版本(如Android 13+、iOS 14+)会在应用读取剪贴板时给用户弹出提示,属于系统正常交互逻辑,用户允许后即可正常读取内容

内容的提问来源于stack exchange,提问作者Phạm Văn Trường

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:39:00