Как копировать в Clipboard в Flutter?

Чтобы добавить функцию «Копировать в буфер обмена» в приложении на Flutter, вы можете использовать встроенный класс Clipboard
из пакета flutter/services.dart
. Это позволит вам скопировать текст в буфер обмена, когда пользователь нажимает на виджет (например, Text
или Icon
).
Вот пошаговый пример того, как это реализовать:
Шаг 1: Импортируйте необходимые пакеты
Необходимо импортировать пакет flutter/services.dart
для доступа к классу Clipboard
.
import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; // для Clipboard
Шаг 2: Используйте GestureDetector или InkWell для отслеживания нажатий
Можно обернуть текст или любой виджет в GestureDetector
или InkWell
для отслеживания событий нажатия и вызова функции копирования.
Пример:
class CopyToClipboardExample extends StatelessWidget {
final String textToCopy = "Это текст для копирования!";
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Пример копирования в буфер обмена'),
),
body: Center(
child: GestureDetector(
onTap: () {
Clipboard.setData(ClipboardData(text: textToCopy));
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text("Скопировано в буфер обмена"),
),
);
},
child: Text(
textToCopy,
style: TextStyle(fontSize: 18),
),
),
),
);
}
}
void main() {
runApp(MaterialApp(
home: CopyToClipboardExample(),
));
}
Объяснение кода:
- Clipboard.setData(): Этот метод используется для копирования переданного текста в буфер обмена. Вы передаете объект
ClipboardData
, который содержит текст для копирования. - GestureDetector: Этот виджет отслеживает жесты (в данном случае нажатие) на дочернем виджете.
- ScaffoldMessenger: Он отображает
SnackBar
, когда текст скопирован, чтобы уведомить пользователя.
Шаг 3: Запустите ваше приложение
Когда вы запустите приложение и нажмете на текст, он будет скопирован в буфер обмена, и появится небольшое уведомление через SnackBar
, информирующее пользователя об успешном копировании.
Вы также можете заменить GestureDetector
на InkWell
, если хотите добавить эффект нажатия:
InkWell(
onTap: () {
Clipboard.setData(ClipboardData(text: textToCopy));
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text("Скопировано в буфер обмена"),
),
);
},
child: Text(textToCopy, style: TextStyle(fontSize: 18)),
)
Таким образом, вы можете легко добавить функцию «Копировать в буфер обмена» в ваше приложение на Flutter.