颤动无法从剪贴板中读取

问题描述 投票:0回答:3

我来问一个关于Flutter和Future以及等待机制的一个特定问题,这似乎有效,但我的剪贴板在使用我的可编辑文本字段时并没有真正起作用,甚至遵循Google的实施建议......

这是我的粘贴代码:

onPressed: () async {
  await getMyData('text');
  _encodingController.text = clipData;
  Scaffold.of(context).showSnackBar(
    new SnackBar(
      content: new Text(
        "Pasted from Clipboard"),
      ),
    );
},

什么不起作用是我的粘贴功能...虽然调试此以下功能的结果是null,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);
    }
  }

我可能正在使用期货和异步等待错误,会喜欢一些指导!!!复制正在使用剪贴板管理器插件!非常感谢!

asynchronous dart flutter clipboard future
3个回答
2
投票

或者您可以使用Flutter的基本方式:

ClipboardData data = await Clipboard.getData('text/plain');

这就像魅力一样。


0
投票

它对我有用:

  _getFromClipboard() async {
    Map<String, dynamic> result =
        await SystemChannels.platform.invokeMethod('Clipboard.getData');
    if (result != null) {
      return result['text'].toString();
    }
    return '';
  }

0
投票

如果要从系统剪贴板中侦听定期更新,也会很有用。 Originally I replied here,只是重新发布解决方案:

#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();
}
© www.soinside.com 2019 - 2024. All rights reserved.