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());
                },
              ),