LogoCoUI

크로스 플랫폼

Flutter와 Web 동시 개발 가이드

크로스 플랫폼#

CoUI는 Flutter와 Jaspr Web에서 동일한 컴포넌트 세트를 제공합니다.

아키텍처#

coui_core (공유 계약)
├── coui_flutter (Flutter 구현)
└── coui_web (Jaspr Web 구현)

공유 계약 (coui_core)#

플랫폼 간 공통 인터페이스를 정의합니다:

// 예: CoreButtonContract
abstract class CoreButtonContract {
  bool get disabled;
  void Function()? get onPressed;
}

API 비교#

생성자 패턴#

// Named parameters, Widget tree
Button(
  variant: ButtonVariant.primary,
  size: ButtonSize.md,
  onPressed: () {},
  child: Text('Click'),
)
// Style modifiers, Component tree
Button(
  style: [Button.primary, Button.md],
  onClick: () {},
  child: text('Click'),
)

테마 적용#

// ComponentThemeData + ThemeExtension
ComponentTheme(
  data: ComponentThemeData(
    button: ButtonTheme(borderRadius: ...),
  ),
  child: widget,
)
// CSS + DaisyUI themes
// data-theme attribute로 전역 테마 전환

컴포넌트 매핑#

전체 140+ 컴포넌트가 양쪽 플랫폼에서 동일하게 제공됩니다:

카테고리FlutterWeb
Form (Input, Select, etc.)20+20+
Display (Avatar, Badge, etc.)25+25+
Navigation (Menu, Tabs, etc.)10+10+
Overlay (Dialog, Toast, etc.)10+10+
Layout (Accordion, Grid, etc.)15+15+
Control (Button, FAB, etc.)10+10+
Chart (Tracker)11
Locale (Localizations)11

개발 팁#

  1. API 먼저 설계: coui_core에 계약을 정의하고 양쪽 구현
  2. 테스트 분리: Flutter widget test + Web unit test 별도 작성
  3. DCM 통일: 양쪽 패키지에 동일한 DCM 규칙 적용
  4. Barrel export: 양쪽 coui_flutter.dart / coui_web.dart 동기화 유지