Flutter can't read from Clipboard

江枫思渺然 提交于 2019-12-04 22:23:31

Or you just can use the Flutter's basic way:

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

That's work like charm.

It's works for me:

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

Also can be useful if you want to listen for periodic updates from the system clipboard. Originally I replied here, just re-posting the solution:

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

First create a method

Future<String> getClipBoardData() async {
        ClipboardData data = await Clipboard.getData(Clipboard.kTextPlain);
        return data.text;
      }

Then in build method

FutureBuilder(
                future: getClipBoardData(),
                initialData: 'nothing',
                builder: (context, snapShot){
                  return Text(snapShot.data.toString());
                },
              ),
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!