Flutter DSL (Domain Specific Language)

플러터에서의 DSL(Domain Specific Language) 스타일 코딩은 복잡한 내부 로직을 감추고, 누구나 쉽고 빠르게 UI를 만들 수 있도록 도와주는 방식입니다. DSL의 핵심 목적은 해당 도메인을 잘 아는 사람(예: 디자이너, 기획자, 초보 개발자)이 복잡한 프로그래밍 지식 없이도 필요한 기능이나 UI를 쉽게 제어할 수 있게 해주는 것입니다. 이 때문에 DSL은 일반적인 프로그래밍 언어보다 훨씬 간결하고, 자연어에 가깝게 호출 방식을 설계합니다.

플러터에서는 Dart의 extension 기능을 활용해, 위젯에 스타일이나 레이아웃을 체이닝 방식으로 붙일 수 있는 DSL 스타일을 구현할 수 있습니다. 예를 들어, 아래처럼 복잡한 UI 코드 대신 간단한 체이닝만으로 원하는 스타일을 적용할 수 있습니다.

extension WidgetStyling on Widget {
  Widget paddingAll(double value) => Padding(
        padding: EdgeInsets.all(value),
        child: this,
      );

  Widget roundedBox({
    Color color = Colors.white,
    double radius = 12,
  }) {
    return Container(
      decoration: BoxDecoration(
        color: color,
        borderRadius: BorderRadius.circular(radius),
      ),
      child: this,
    );
  }

  Widget shadow({double blur = 8.0}) {
    return Container(
      decoration: BoxDecoration(
        boxShadow: [
          BoxShadow(color: Colors.black12, blurRadius: blur),
        ],
      ),
      child: this,
    );
  }
}

Usage:
Text("Styled Box")
  .paddingAll(12)
  .roundedBox(color: Colors.grey[200]!)
  .shadow()

이런 방식은 내부적으로 어떤 위젯이 어떻게 감싸지고, 어떤 스타일이 적용되는지 신경 쓰지 않아도 되며, 필요한 스타일만 간단하게 붙여주면 되기 때문에 코드가 짧아지고, 재사용성도 높아집니다.

즉, 플러터 DSL 스타일은

  • 복잡한 내부 구현을 숨기고,

  • 선언적이고 직관적으로 UI를 설계할 수 있게 하며,

  • 비개발자나 초보자도 쉽게 사용할 수 있는 사용자 경험을 제공합니다.

이런 특징 덕분에, 플러터에서 DSL 스타일을 활용하면 누구나 빠르고 간편하게 멋진 UI를 만들 수 있습니다. (참고: 코틀린 DSL이나 QueryDSL 등도 비슷한 목적과 장점을 가집니다)

코틀린 DSL (https://myungpyo.medium.com/kotlin-dsl-간단히-알아보기-5f95fddf00f9)

Last updated