[flutter] 플러터 앱에서 sticky 헤더를 사용한 사진 필터 앱 디자인하기

플러터

플러터(Flutter)는 Google에서 개발한 UI 프레임워크로, 크로스 플랫폼 앱을 손쉽게 개발할 수 있도록 도와줍니다. 이번 블로그에서는 플러터 앱에서 sticky 헤더를 사용한 사진 필터 앱 디자인하는 방법에 대해 알아보겠습니다.

Table of Contents

  1. 소개
  2. 프로젝트 설정
  3. 사진 필터 앱 디자인
  4. 결론

소개

사진 필터 앱은 사용자가 사진을 선택하고 원하는 필터를 적용할 수 있는 기능을 제공하는 앱입니다. 일반적으로 앱의 상단에는 사진 라이브러리에서 사진을 선택할 수 있는 버튼과 현재 선택한 사진을 미리 볼 수 있는 공간을 제공합니다. 그리고 하단에는 다양한 필터 옵션을 제공하여 사용자가 선택한 필터를 사진에 적용할 수 있도록 합니다.

프로젝트 설정

먼저, Flutter 프로젝트를 생성합니다. 이를 위해 Flutter SDK를 설치하고, IDE에 플러그인을 설치합니다. 그리고 다음 명령어로 새로운 Flutter 프로젝트를 생성합니다.

flutter create photo_filter_app

프로젝트가 생성되면 main.dart 파일을 열고 필요한 패키지를 임포트합니다. 사진 필터 앱을 디자인하기 위해 다음 패키지를 사용합니다.

import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';

사진 필터 앱 디자인

Sticky 헤더 추가하기

사진 필터 앱에서는 상단에 sticky 헤더를 추가하여 기능을 제공합니다. 이 헤더는 사용자가 사진을 선택하고 필터를 적용할 수 있는 기능을 포함합니다.

다음은 헤더를 추가하는 코드입니다.

class FilterHeader extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      height: 80,
      child: Padding(
        padding: const EdgeInsets.symmetric(horizontal: 16),
        child: Row(
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          children: [
            IconButton(
              icon: Icon(Icons.photo_library),
              onPressed: () {
                // 사진 라이브러리에서 사진을 선택하는 기능 구현
              },
            ),
            Text(
              '사진 필터 앱',
              style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
            ),
            IconButton(
              icon: Icon(Icons.check),
              onPressed: () {
                // 선택한 필터를 적용하는 기능 구현
              },
            ),
          ],
        ),
      ),
    );
  }
}

사진 선택 기능 추가하기

사용자가 헤더에 있는 사진 라이브러리 버튼을 클릭하면, 사진을 선택할 수 있는 기능을 구현해야 합니다. 이를 위해 다음 코드를 추가합니다.

class MyApp extends StatelessWidget {
  final ImagePicker _picker = ImagePicker();

  Future<void> _selectPhoto() async {
    final image = await _picker.getImage(source: ImageSource.gallery);
    // 선택한 사진을 처리하는 로직 구현
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('플러터 앱'),
      ),
      body: Column(
        children: [
          FilterHeader(),
          // 사진 선택 버튼 추가
          ElevatedButton(
            child: Text('사진 선택'),
            onPressed: _selectPhoto,
          ),
        ],
      ),
    );
  }
}

필터 옵션 추가하기

하단에는 다양한 필터 옵션을 추가하여 사용자가 선택한 필터를 적용할 수 있도록 합니다. 다음은 필터 옵션을 추가하는 코드입니다.

class MyApp extends StatelessWidget {
  final ImagePicker _picker = ImagePicker();

  Future<void> _selectPhoto() async {
    final image = await _picker.getImage(source: ImageSource.gallery);
    // 선택한 사진을 처리하는 로직 구현
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('플러터 앱'),
      ),
      body: Column(
        children: [
          FilterHeader(),
          // 필터 옵션 추가
          ListTile(
            leading: Icon(Icons.adjust),
            title: Text('밝기 조절'),
            onTap: () {
              // 밝기 조절 필터를 적용하는 로직 구현
            },
          ),
          ListTile(
            leading: Icon(Icons.color_lens),
            title: Text('컬러 필터'),
            onTap: () {
              // 컬러 필터를 적용하는 로직 구현
            },
          ),
          // 이하 필터 옵션 추가
        ],
      ),
    );
  }
}

결론

위의 예시 코드를 참고하여 플러터 앱에서 sticky 헤더를 사용한 사진 필터 앱을 디자인할 수 있습니다. 플러터의 다양한 기능과 위젯들을 활용하여 사용자에게 편리한 UI를 제공할 수 있습니다. 이러한 방법을 응용하여 원하는 디자인을 구현해보세요!