Clickable | CoUI

Clickable

임의의 child 를 인터랙티브하게 만드는 크로스플랫폼 클릭 래퍼 (인프라)

Clickable#

child 를 감싸 인터랙티브하게 만드는 인프라 프리미티브입니다 — 포인터 커서, 포커스 링, press 피드백 스케일, 키보드 활성화(Enter/Space)를 직접 소유합니다. Button 같은 상위 컴포넌트가 이 위에 쌓입니다. 직접 쓸 일은 드물지만, 커스텀 클릭 영역을 만들 때 raw GestureDetector 대신 사용하면 양 플랫폼 동작이 통일됩니다.

Live Preview#

Web
클릭 가능한 영역
Flutter
Loading Flutter...
class ClickableDefaultExample extends StatelessComponent {
  const ClickableDefaultExample({super.key});

  @override
  Component build(BuildContext context) {
    return Clickable(
      onPressed: () {},
      child: Card(child: Text('클릭 가능한 영역').bodyMedium),
    );
  }
}
class ClickableDefaultExample extends StatelessWidget {
  const ClickableDefaultExample({super.key});

  @override
  Widget build(BuildContext context) {
    return Clickable(
      onPressed: () {},
      child: Card(child: Text('클릭 가능한 영역').bodyMedium),
    );
  }
}

사용법#

Clickable(
  onPressed: () {},
  child: Card(child: Text('클릭 가능한 영역').bodyMedium),
)

Props#

파라미터타입기본값설명
child Widget / Component required 인터랙티브하게 만들 콘텐츠
onPressed void Function()? null 기본 탭/클릭 핸들러
onDoubleTap / onLongPress void Function()? null 더블탭 / 롱프레스
onHover / onFocus void Function(bool)? null hover / focus 상태 변화 콜백
enabled bool true 비활성화 시 인터랙션 차단
focusOutline bool true 포커스 시 링 표시
clickableStyle CoreClickableStyle? null 커서 / 피드백 chrome 단일 진입점

Flutter 전용 인프라(focusNode·statesController·mouseCursor)는 framework idiom 으로 노출됩니다 — Web 은 브라우저 native focus/cursor 로 동일 capability 를 제공합니다.