[앱개발] 2. Flutter에 대해 알아보자 – 앱 개발 입문자를 위한 완전정리

앞서 우리는 앱개발에 필요한 프로그래밍 언어인 Dart 에 대해 알아보았습니다.
(1편 바로가기 → [앱개발] 1. Dart 언어에 대해 알아보자. – 앱개발 입문자를 위한 완전 정리)

Java는 IntelliJ 와 Eclipse, C/C++/C# 은 Visual Studio, Python은 VS Code 라는 개발도구에서 많이 사용합니다.
그렇다면 Dart라는 언어를 어디서 사용할 수 있을까요?

바로 앱개발을 포함해 많은 곳에서 사용할 수 있는 강력한 프레임워크 Flutter 입니다. 이번 포스팅은 Dart 언어를 활용하는 앱 개발도구인 플러터 프레임워크에 대해 알아보겠습니다. 개발 자체에 문외한이거나 다른 언어를 사용하다가 궁금해서 보시는 분들 등 모든 분들에게 알기 쉽고 정확하게 정리하였으니 천천히 읽어보시길 바랍니다!

Flutter란 무엇인가?

모바일 앱을 만들고 싶을 때, 안드로이드는 Java/Kotlin, iOS는 Swift/Objective‑C로 구별되어 따로 개발해야 한다는 생각이 일반적이었습니다. 그게 아니라면 Spring framwork 혹은 전자정부프레임워크에 Web View로 감싸는 방식으로 개발이 되었습니다.

하지만 최근엔 하나의 코드베이스로 Android + iOS를 포함해 웹과 데스크톱까지 모든 부분을 개발하는 방식이 각광 받고 있습니다.
하이브리드 프레임워크라고 분류하거나 크로스 플랫폼이라고도 불리고 있으며 그 중심에 있는 것이  바로 Flutter입니다.

Flutter는 Google 이 만든 UI 프레임워크(Software Toolkit)로, Dart 언어를 기반으로 작동합니다.

앱개발 flutter 입문

왜 크로스플랫폼 앱 개발이 중요할까?

✔ 비용과 시간 절감

  • Android용 코드iOS용 코드별도로 작성하지 않아도 됩니다.
  • 한 번 작성하고 두 플랫폼에 적용이 가능하기에 인건비가 줄어들고 개발해야 할 리소스의 양이 줄어듭니다.

✔ 유지보수 및 관리가 쉬움

  • 코드가 Android / iOS 용으로 분리되어 있으면 기능 업데이트 시 두 코드 베이스를 동기화 해야 합니다.
  • 크로스 플랫폼으로 작성하면 버그 수정·기능 추가 시 하나의 코드에서 처리가 가능합니다.

✔ 사용자 도달 범위 증가

  • Android + iOS 모두 지원하기에 더 많은 유저에게 도달이 가능합니다.
  • 웹/데스크톱까지 확장이 가능하고 이를 목적으로 이용하면 멀티플랫폼 전략이 가능합니다.

Flutter의 핵심 특징

✔ 위젯 기반 구조

UI 요소가 모두 위젯(widget) 형태로 존재합니다. 버튼, 텍스트, 이미지, 레이아웃, 스크롤 등등의 기능들이 전부 위젯으로 존재합니다.

Text("Hello Flutter"),
ElevatedButton(onPressed: () {…}, child: Text("Click"))

“위젯”이란 이미 기능이 내장되어 있는 조립부품이라고 생각하시면 됩니다. 우리가 마치 프라모델의 부품을 조립하거나 레고의 블록을 조립하듯 위와 같은 소스코드처럼 조합해서 앱 화면을 구성합니다.

위젯 기반 구조의 장점

UI를 작게 나눠서 관리할 수 있음

  • 화면을 작은 단위로 쪼개서 재사용이 가능합니다.
  • 예: 동일한 스타일 버튼을 여러 화면에서 재사용

코드가 직관적

  • “이 버튼은 어디에 있고, 어떤 글씨인지”가 코드에서 직관적으로 보입니다.
  • HTML/CSS처럼 스타일과 구조가 분리되어 복잡하게 연결되는 문제가 없습니다.

빠른 UI 변경 가능

  • Hot Reload와 결합하면 화면을 수정했을 때 즉각적으로 반영할 수 있습니다.
  • 디자인 시안 및 레이아웃 조정이 즉시 가능합니다.

재사용성

  • 우리가 class를 정의하거나 function 을 구성해서 만들어 두고 사용하듯이 위젯 하나만 정의해 두면, 여러 화면에서 재사용이 가능합니다.
  • 프로젝트의 유지보수 및 소스코드 관리가 편리하고 효율적입니다.

✔ 빠른 개발 — Hot Reload

조금 전 장점에서 언급한 내용입니다. 코드를 수정한 뒤 몇 초 만에 앱 화면이 갱신되는 기능이며 이로 인해 개발 속도가 매우 빠르고, UI 조정·디자인 작업에 최적화되어 있기에 프론드엔드 개발 시 엄청난 효율을 발휘합니다.

✔ 네이티브급 성능

화면 그리기(Graphics Rendering)를 직접 처리하기 때문에 React Native처럼 JavaScript ↔ Native 브릿지 문제가 없습니다.
그로 인해 애니메이션, 스크롤, 렌더링 성능이 매우 우수합니다.

✔ 단일 언어 + 단일 코드베이스

“Dart” 라는 하나의 언어로 Android + iOS + 웹 + 데스크톱까지 커버가 가능합니다.
광범위하고 호환성이 좋은 개발 도구이기에 앱 개발을 처음 시작하는 개발자 및 웹개발을 해오던 기존 개발자들에게도 진입 장벽이 낮습니다.

✔ 강력한 생태계와 패키지

공식 패키지 저장소인 pub.dev 에는 수천 개의 플러그인 및 패키지가 있습니다. 카메라, 지도, 채팅, 결제 등 대부분 기능이 미리 만들어져 있기 때문에 개발 속도가 상당히 빠른 편에 속합니다.


구조 살펴보기

앱 개발을 시작할 때 플러터 프로젝트 내부 구조는 보통 아래와 같습니다.

my_flutter_app/
 ├ lib/
 │   └ main.dart
 ├ pubspec.yaml
 ├ android/
 ├ ios/
 └ web/
  • lib/main.dart가 진입점이며
  • home: 위젯, MaterialApp 또는 CupertinoApp으로 구성 됩니다.
  • pubspec.yaml에서 패키지·버전·에셋 등을 관리합니다.

간단한 코드 예제

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Hello Flutter',
      home: Scaffold(
        appBar: AppBar(title: Text('Flutter 입문')),
        body: Center(
          child: Text(
            '첫 Flutter 앱입니다!',
            style: TextStyle(fontSize: 24),
          ),
        ),
      ),
    );
  }
}

코드가 어떻게 동작하고 어떻게 구성되는지 참고 할 만한 예제 코드입니다.

  • 앱이 어떤 구조로 생겼는지
  • 위젯이 어떻게 쌓이는지
  • 화면이 어떻게 구성되는지

직관적으로 이해할 수 있습니다.


장점과 단점

장점

  • 크로스플랫폼 개발 가능
  • 네이티브급 성능
  • 매우 빠른 개발 속도
  • 생태계·패키지 다양
  • UI 커스터마이징 자유

단점

  • 앱 용량이 다소 큰 편 → 설치 용량 신경 써야 함
  • 다른 플랫폼(예: 웹, 데스크톱)에서는 아직 성숙 단계
  • Dart 자체 생태계는 일부 언어(Java, JavaScript에 비해 작은 편)

어떤 사람들이 배우면 좋은가?

  • Android + iOS 앱 개발을 동시에 시작하고 싶은 입문자
  • 사이드프로젝트스타트업 MVP빠르게 만들고자 하는 개발자
  • UI 중심 개발을 선호하는 사람
  • 기존 웹 개발자에서 앱 개발로 시프트하려는 사람

외부 참고자료


마무리

이번 글에서 Flutter가 무엇인지, 왜 중요한지, 어떻게 시작하는지까지 전체 그림을 살펴보았습니다. 웹 개발이 주력인 저로서도 가끔 분위기 환기 혹은 스스로의 개발 역량에서 또 다른 역량을 갖추기 위해 앱 개발에 관심을 갖고 있는 편입니다. 앱 개발을 공부하면서 복습 및 정리 포스팅과 사이드 프로젝트 1인 개발 등 관련하여 많은 포스팅을 할 예정이니 많은 관심 부탁드립니다.

다음 편 예고

다음 글에서는 실제 “Flutter 설치 가이드와 Dart 언어 설치 가이드” 를 포스팅 할 예정입니다. 저와 함께 앱 개발 공부를 시작하실 분들은 많은 기대 부탁드립니다.

1편 바로가기 → [앱개발] 1. Dart 언어에 대해 알아보자. – 앱개발 입문자를 위한 완전 정리

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤