Flutter项目中遇到在安卓端,输入框不能长按粘贴,其它像iOS端、浏览器功能都是正常的。查询各种资料,部分说是官方为了避免手势冲突禁用了长按粘贴功能。各种查资料、各种尝试都开启不了这一功能,而项目紧急那只能曲线救国了。
第一个方案:
因为h5复制文本内容到剪贴板这块是没问题的,那么h5是否可以直接获取剪贴板中的内容直接填写到输入框中,然而...,居然获取不到,说啥子只有在IE浏览器中才管用。
第二个方案(最终方案):
h5获取不到,但原生端不是可以的吗。最终流程,h5端输入框开始编辑,去调用原生端方法,告知需要获取剪贴板内容,原生端获取剪贴板内容调用h5端方法同时传值给h5端,最后输入框中不就有值了吗。
JavascriptChannel(
name: 'copy',
onMessageReceived: (JavascriptMessage message) {
_toHTMLCopyContent();
}
),
_toHTMLCopyContent() async {
var clipboardData = await Clipboard.getData(Clipboard.kTextPlain);//获取粘贴板 中的文本
if (clipboardData != null) {
_controller.evaluateJavascript("getCopy('${clipboardData.text}')").then((value) {
});
}
}