-
-
Save bergwerf/1b427ad2b1f9770b260dd4dac295b6f0 to your computer and use it in GitHub Desktop.
/// A hack to copy a string to the clipboard. | |
bool _copyToClipboardHack(String text) { | |
final textarea = new TextAreaElement(); | |
document.body.append(textarea); | |
textarea.style.border = '0'; | |
textarea.style.margin = '0'; | |
textarea.style.padding = '0'; | |
textarea.style.opacity = '0'; | |
textarea.style.position = 'absolute'; | |
textarea.readOnly = true; | |
textarea.value = text; | |
textarea.select(); | |
final result = document.execCommand('copy'); | |
textarea.remove(); | |
return result; | |
} |
Thank you very much, this works perfectly!
I'm running Flutter (Channel master, v1.16.3-pre.56, on Mac OS X 10.15.3 19D76, locale de-DE)
• Flutter version 1.16.3-pre.56
• Framework revision 8857c4cec8 (9 days ago), 2020-03-25 21:21:01 -0400
• Engine revision b235233e9d
• Dart version 2.8.0 (build 2.8.0-dev.17.0 2323087237)
and getting FALSE from the document.execCommand('copy'); (the text is not copied)
Do you guys have any idea?
You mean Flutter Web or for server side?
Any HTML website. It uses document
from dart:html
(which is effectively a proxy for the JavaScript document object). This code is similar to JavaScript snippets to copy text to the clipboard (might only work after events like click to prevent websites from altering the clipboard without the user noticing it).
Thanks, this works.
Thanks!
Thanks. It works on Angular Dart.
Thanks. it Works.
But it would be better if its not hacky.
How can we do it using the navigator's clipboard feature?
How can we do it using the navigator's clipboard feature?
You can directly access the clipboard API in Dart. Note that you can only alter the clipboard in response to user events (this is a safety measure).
<button id="copy">Copy!</button>
import 'dart:html';
void main() {
document.querySelector('#copy').onClick.listen((_) {
window.navigator.clipboard.writeText("Hello, World!");
});
}
@bergwerf Thanks for posting a clipboard API example in dart. 💯 🙌 🍻
Awesome worked