반응형
질문
길게 탭하면 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...")
텍스트가 선택되면 "복사" 컨텍스트 버튼이 나타납니다.
반응형
댓글