Как копировать в 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(),
  ));
}

Объяснение кода:

  1. Clipboard.setData(): Этот метод используется для копирования переданного текста в буфер обмена. Вы передаете объект ClipboardData, который содержит текст для копирования.
  2. GestureDetector: Этот виджет отслеживает жесты (в данном случае нажатие) на дочернем виджете.
  3. 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.