Asynchronous 颤振能';无法从剪贴板读取
我来问一个关于颤振和未来等待机制的非常具体的问题,这个机制似乎在工作,但我的剪贴板在操作我的可编辑文本字段时并不真正起作用,即使是按照谷歌关于实现的建议 这是我粘贴的代码:Asynchronous 颤振能';无法从剪贴板读取,asynchronous,dart,flutter,clipboard,future,Asynchronous,Dart,Flutter,Clipboard,Future,我来问一个关于颤振和未来等待机制的非常具体的问题,这个机制似乎在工作,但我的剪贴板在操作我的可编辑文本字段时并不真正起作用,即使是按照谷歌关于实现的建议 这是我粘贴的代码: onPressed: () async { await getMyData('text'); _encodingController.text = clipData; Scaffold.of(context).showSnackBar( new SnackBar( content: new T
onPressed: () async {
await getMyData('text');
_encodingController.text = clipData;
Scaffold.of(context).showSnackBar(
new SnackBar(
content: new Text(
"Pasted from Clipboard"),
),
);
},
不起作用的是我的粘贴功能。。。当调试以下函数的结果为空时,wth
static Future<ClipboardData> getMyData(String format) async {
final Map<String, dynamic> result =
await SystemChannels.platform.invokeMethod(
'Clipboard.getData',
format,
);
if (result == null) {
return null;
} else {
clipData = ClipboardData(text: result['text']).text;
return ClipboardData(text: result['text'].text);
}
}
静态未来getMyData(字符串格式)异步{
最终地图结果=
等待SystemChannel.platform.invokeMethod(
“Clipboard.getData”,
格式,
);
如果(结果==null){
返回null;
}否则{
clipData=ClipboardData(text:result['text'])。text;
返回剪贴板数据(文本:结果['text'].text);
}
}
我可能用的期货和异步等待错误,会喜欢一些指导!!!正在使用剪贴板管理器插件进行复制!非常感谢 这对我很有用:
\u getFromClipboard()异步{
映射结果=
等待SystemChannels.platform.invokeMethod('Clipboard.getData');
如果(结果!=null){
返回结果['text'].toString();
}
返回“”;
}
您只需重新使用颤振的现有库代码,即可从剪贴板中获取数据
ClipboardData data = await Clipboard.getData('text/plain');
如果要侦听系统剪贴板中的定期更新,也可能很有用。 ,只需重新发布解决方案:
#creating a listening Stream:
final clipboardContentStream = StreamController<String>.broadcast();
#creating a timer for updates:
Timer clipboardTriggerTime;
clipboardTriggerTime = Timer.periodic(
# you can specify any duration you want, roughly every 20 read from the system
const Duration(seconds: 5),
(timer) {
Clipboard.getData('text/plain').then((clipboarContent) {
print('Clipboard content ${clipboarContent.text}');
# post to a Stream you're subscribed to
clipboardContentStream.add(clipboarContent.text);
});
},
);
# subscribe your view with
Stream get clipboardText => clipboardController.stream
# and don't forget to clean up on your widget
@override
void dispose() {
clipboardContentStream.close();
clipboardTriggerTime.cancel();
}
#创建监听流:
final clipboardContentStream=StreamController.broadcast();
#为更新创建计时器:
计时器剪贴板触发时间;
clipboardTriggerTime=Timer.periodic(
#您可以指定任何需要的持续时间,大约每20次从系统读取一次
常数持续时间(秒:5),
(计时器){
Clipboard.getData('text/plain')。然后((clipboarContent){
打印('剪贴板内容${clipboarContent.text}');
#发布到您订阅的流
clipboardContentStream.add(clipboarContent.text);
});
},
);
#订阅你的观点
Stream get clipboardText=>clipboardController.Stream
#别忘了清理你的小部件
@凌驾
无效处置(){
clipboardContentStream.close();
clipboardTriggerTime.cancel();
}
首先创建一个方法
Future<String> getClipBoardData() async {
ClipboardData data = await Clipboard.getData(Clipboard.kTextPlain);
return data.text;
}
FutureBuilder(
future: getClipBoardData(),
initialData: 'nothing',
builder: (context, snapShot){
return Text(snapShot.data.toString());
},
),