[flutter] 클리퍼를 이용한 플러터 앱 알림 디자인 예제

이 예제에서는 플러터의 클리퍼(clipper)를 이용하여 앱 알림 디자인을 구현하는 방법에 대해 알아보겠습니다. 클리퍼는 원하는 모양으로 위젯을 자를 수 있는 기능을 제공합니다. 앱 알림 디자인에서는 일반적으로 곡선 모양이 많이 사용되므로, 해당 모양을 구현하는 클리퍼를 사용하면 간편하게 디자인할 수 있습니다.

준비물

이 예제를 따라하기 위해서는 다음과 같은 준비물이 필요합니다:

예제 작성하기

먼저, 새로운 플러터 프로젝트를 생성하고 main.dart 파일을 엽니다.

import 'package:flutter/material.dart';

class NotificationClipper extends CustomClipper<Path> {
  @override
  Path getClip(Size size) {
    final path = Path();
    path.moveTo(0, size.height); // 시작 지점

    // 좌측 상단 모서리
    path.lineTo(size.width * 0.3, size.height * 0.7);
    path.quadraticBezierTo(
      size.width * 0.8,
      size.height * 0.4,
      size.width,
      size.height * 0.6,
    );

    // 우측 상단 모서리
    path.lineTo(size.width, 0);
    path.lineTo(0, 0);
    path.close();

    return path;
  }

  @override
  bool shouldReclip(CustomClipper<Path> oldClipper) {
    return false;
  }
}

class NotificationCard extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      width: 300,
      height: 150,
      child: ClipPath(
        clipper: NotificationClipper(),
        child: Container(
          color: Colors.blue,
          child: Center(
            child: Text(
              '새로운 알림이 도착했습니다!',
              style: TextStyle(
                color: Colors.white,
                fontSize: 20,
              ),
            ),
          ),
        ),
      ),
    );
  }
}

void main() {
  runApp(MaterialApp(
    home: Scaffold(
      appBar: AppBar(
        title: Text('알림 디자인 예제'),
      ),
      body: Center(
        child: NotificationCard(),
      ),
    ),
  ));
}

위 코드에서는 NotificationClipper라는 클리퍼 클래스를 정의하고, CustomClipper 클래스를 상속하도록 합니다. 이 클리퍼는 getClip 메서드를 구현하여 클리핑할 모양을 정의합니다. 여기서는 좌측 상단과 우측 상단의 곡선 모양을 만들어 주는 베지에 곡선을 사용하였습니다.

그리고 NotificationCard 위젯 안에서는 ClipPath 위젯을 사용하여 알림 카드의 모양을 지정하고, 해당 클리퍼를 사용하도록 합니다. 이를 통해 알림 카드가 곡선 모양으로 표시됩니다. Container 위젯을 사용하여 카드의 배경색과 텍스트를 구성하였습니다.

마지막으로, main 함수에서는 앱의 기본 구조를 정의하고 NotificationCard 위젯을 중앙에 위치시킵니다.

실행하기

예제 코드를 작성한 후에는 터미널에서 flutter run 명령을 실행하여 앱을 실행할 수 있습니다. 디바이스나 에뮬레이터에 앱이 로드되면 곡선 모양의 알림 카드가 표시될 것입니다.

결론

이번 예제에서는 플러터의 클리퍼를 이용하여 앱 알림 디자인을 구현하는 방법을 살펴보았습니다. 클리퍼를 사용하면 원하는 모양으로 위젯을 자를 수 있으므로, 다양한 디자인을 구현할 수 있습니다. 플러터의 클리퍼 기능을 활용하여 앱의 UI를 더욱 다채롭게 꾸밀 수 있습니다.

참고 자료