Flutter中如何复制文本到剪贴板且保留字体样式
解决Flutter复制富文本带样式到剪贴板的问题
默认的Clipboard.setData只传text参数只能复制纯文本,要保留样式得同时传入HTML格式的内容——多数支持富文本的应用(如Word、浏览器)都会识别剪贴板里的HTML数据来还原样式。
实现步骤:
- 先把你的富文本内容转换成HTML格式字符串,比如包含
<b>、<i>、<span style="color:red">这类样式标签的内容。 - 使用Flutter 3.10及以上版本的
ClipboardData,它新增了html参数,可以同时传入纯文本和HTML格式的富文本内容。
示例代码:
IconButton( onPressed: () { // 备用的纯文本内容 final plainText = "这是带样式的文本"; // 对应带样式的HTML内容 final htmlText = "<span style='color:blue; font-weight:bold'>这是带样式的文本</span>"; Clipboard.setData(ClipboardData( text: plainText, html: htmlText, )); }, icon: const Icon(Icons.copy), )
低版本兼容方案:
如果你的Flutter版本低于3.10,官方ClipboardData不支持html参数,可以用第三方包(比如flutter_clipboard),在pubspec.yaml里添加依赖后,调用其API来设置富文本剪贴板内容。
内容的提问来源于stack exchange,提问作者Dipta Das
相关产品推荐
相关产品推荐

