디자인 시스템은 일관된 사용자 경험을 제공하고, UI 요소들의 반복 작업을 줄이며, 유지보수성을 높이는 데 사용되는 방법론입니다. 이를 통해 시각적 일관성을 유지하고, 다양한 디바이스와 해상도에서 일관된 인터페이스를 제공할 수 있습니다.
Foundation은 텍스트, 아이콘, 색상, 여백 등 UI의 기본 구성 요소를 포함합니다.
Component는 여러 기초 요소들이 모여 하나의 구성 요소를 이루는 것입니다.
Page는 구성 요소들이 모여 하나의 화면 단위를 이루는 것입니다.
class AppColors {
static const Color primary = Color(0xFF6200EE);
static const Color secondary = Color(0xFF03DAC6);
static const Color background = Color(0xFFF6F6F6);
static const Color surface = Color(0xFFFFFFFF);
}
class PrimaryButton extends StatelessWidget {
final String text;
final VoidCallback onPressed;
PrimaryButton({required this.text, required this.onPressed});
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: onPressed,
child: Text(text),
style: ElevatedButton.styleFrom(
primary: AppColors.primary,
onPrimary: Colors.white,
padding: EdgeInsets.symmetric(horizontal: 16, vertical: 12),
textStyle: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
),
);
}
}
class ShoppingPage extends StatelessWidget {
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Shopping')),
body: ListView(
children: [
ProductCard(product: Product(name: 'Product 1', price: 29.99)),
ProductCard(product: Product(name: 'Product 2', price: 59.99)),
ProductCard(product: Product(name: 'Product 3', price: 19.99)),
],
),
);
}
}
디자인 시스템은 다음과 같은 특징과 단점을 가지고 있습니다.