본문 바로가기
Flutter/Flutter FAQ

Flutter 플러터에서 복사 가능한 텍스트 위젯을 만드는 방법은 무엇인가요?, How to make copyable Text Widget in Flutter?

by 베타코드 2023. 7. 17.
반응형

질문


길게 탭하면 Text 위젯에는 '복사'라는 툴팁이 나타납니다. '복사'를 클릭하면 텍스트 내용이 시스템 클립보드에 복사됩니다.

다음은 길게 탭하여 텍스트를 복사하지만 '복사'가 나타나지 않으므로 사용자는 내용이 클립보드에 복사되었음을 알 수 없습니다.

class CopyableText extends StatelessWidget {
  final String data;
  final TextStyle style;
  final TextAlign textAlign;
  final TextDirection textDirection;
  final bool softWrap;
  final TextOverflow overflow;
  final double textScaleFactor;
  final int maxLines;
  CopyableText(
    this.data, {
    this.style,
    this.textAlign,
    this.textDirection,
    this.softWrap,
    this.overflow,
    this.textScaleFactor,
    this.maxLines,
  });
  @override
  Widget build(BuildContext context) {
    return new GestureDetector(
      child: new Text(data,
          style: style,
          textAlign: textAlign,
          textDirection: textDirection,
          softWrap: softWrap,
          overflow: overflow,
          textScaleFactor: textScaleFactor,
          maxLines: maxLines),
      onLongPress: () {
        Clipboard.setData(new ClipboardData(text: data));
      },
    );
  }
}

답변


Flutter 1.9 이후에는 다음을 사용할 수 있습니다.

SelectableText("Lorem ipsum...")

텍스트가 선택되면 "복사" 컨텍스트 버튼이 나타납니다.

enter image description here

반응형

댓글