[Flutter 입문] Flutter 기초 다지기

김동연·2025년 3월 24일

Flutter 기초 다지기

  • Flutter 프로젝트의 구성 및 패키지 사용방법

1. 프로젝트 구조

1. 중요 내용들

  • lib 폴더
    • 애플리케이션을 만들기 위한 Dart 소스코드를 작성하는 곳
    • 플러터로 앱 개발 시 제일 많이 작업하는 폴더(소스코드를 작성해야해서)
  • test 폴더
    • lib 폴더 아래의 작성한 Dart 코드를 테스트하기 위한 코드를 작성하기 위한 곳
    • 작성한 코드를 기반으로 다양한 시나리오를 작성해서 테스트를 통과해야만 배포하게 하는 등의 목적으로 사용가능
    • 위젯을 테스트 해볼 수도 있으며 작성한 복잡한 수식의 코드가 정상적으로 작동하는지 등의 테스트코드 작성 가능
  • android, ios, linux, macos, web, windows 폴더
    • 플러터 프레임워크만으로는 할수 없는 네이티브 기능을 사용하기 위해 각각 플랫폼 별 네이티브 코드를 작성하는 곳
      • 예를들어 디바이스의 GPS를 사용하기 위하여 android와 ios 폴더 내에서 각각의 네이티브 코드를 Dart 코드와 상호작용하게 작성
    • 각각의 플랫폼(Android, IOS) 등에서 표시되는 이름 및 아이콘 등 수정
  • pubspec.yaml
    • 플러터의 공식 패키지 저장소인 pub.dev의 패키지들을 사용하기 위해 이 파일 내에 추가하여 사용할 수 있습니다. 또한 앱 내에서 사용한 정적 이미지, 폰트 파일들의 위치를 선언할 수 있습니다. 사용방법은 뒤에 다루겠습니다.
  • pubspec.lock
    • pubspec.yaml 파일에 패키지를 추가 후 패키지를 받으면 사용된 패키지들의 구성을 정의하며 버전들을 기록해두는 곳입니다. 개발자가 직접 수정할 일은 없으며 패키지 추가 시 자동으로 구성됩니다.
  • .gitignore
    • git repository에 올릴 시 올리지 않아도 되는 파일을 명시해 두는 곳입니다. 특정한 파일이름, 확장자, 디렉토리 등을 지정해 둘 수 있으며 이곳에 명시해 두면 git repository에 업로드 시 업로드가 되지 않습니다. 노출되면 안되는 API 키 파일을 저장해둔 파일이나 IDE 의 설정파일 등을 추가해 놓습니다.
  • analysis_options.yaml
    • 코드를 작성하다 보면 가끔씩 IDE에서 파란색, 노란색 등의 밑줄을 뜨는것을 볼 수 있습니다. 해당 밑줄은 코드 린트(코드 가이드. 코드의 가독성 및 오류 발생 방지 등을 방지하기 위해 사용하는 가이드)에 의해서 띄워주는 것인데 무시해도 되는 규칙 등을 저장해놓는 것입니다. 현재 단계에선 이런게 있구나 정도로만 기억하고 넘어가시면 충분합니다.

2. 기타 내용들

  • 반드시 알 필요는 없고, 이러한 것이 있다! 이정도만 알고 있으면 됩니다!
  • .metadata
    • 플러터 프로젝트의 속성이 적혀있는 파일
      • 사용한 플러터의 버전 등의 정보가 담겨져 있으며 개발자가 수정할 일은 없음
  • .dart_tool
    • 사용된 패키지가 로컬(현재 PC)에 저장된 경로 등을 관리
      • . git 저장소에 올라가지 않게 디폴트로 설정되어 있습니다
  • .idea
    • 작업중인 IDE의 프로젝트 별 세팅 정보들이 들어가있으며 dart_tool 과 마찬가지로 git 저장소에 올라가지 않음
  • .iml
    • 이 파일은 안드로이드 스튜디오에서 프로젝트의 구성을 관리하기 위한 파일이며 git 저장소에 올라가지 않음
  • README.md
    • 프로젝트에서 사용된 버전, 소개 등 자유롭게 프로젝트에 관해 문서를 작성

2. 패키지

  • 개발자들이 쉽게 사용할 수 있도록 특정한 기능들이나 UI등을 미리 구현해 놓은 것
    GPS 기능을 코드 몇줄로 사용할 수 있게 해놓은 geolocator 패키지

패키지를 사용하는 방법

1. pubspec.yaml 파일 dependencies 항목 아래 패키지명: 버전넘버 형식으로 작성

  • http통신을 위한 http 패키지의 1.2.2 버전을 작성하기 위해서는 아래와 같이 작성
  • 최신버전으로 변경시 번거로움. 이때, 들여쓰기 주의할 것



2. flutter pub add` 패키지명 명령어 이용(권장되는 방법)

  • 직접 추가하는 방식을 사용하게 되면, 현재 자신의 개발환경의 flutter SDK의 버전과 맞지 않는 패키지를 추가하게 되어 패키지 추가를 실패할 수 있습니다!

⇒ 여러 패키지들을 사용할 때 서로 같은 패키지를 사용해 패키지를 만든 경우 버전 충돌이 일어날 수 있기 때문. 따라서 아래와 같은 방식을 사용함.


* 버전이 내환경에 맞게 알아서 설정됨.

3. main.dart

1. Widget 이란?

  • UI를 구성하는 기본요소
  • 버튼, 아이콘, 글자, 이미지 등
  • Widget들을 모아서 하나의 위젯으로 만들기도 함
  • StatelessWidgetStatefulWidget이 있으며 build함수 내에서 구성을 dart코드로 작성

2. MaterialApp 이란?

  • 앱의 기본적인 구조와 디자인을 잡아주는 위젯
  • 페이지가 전환되는 애니메이션, 기본 버튼들의 디자인 등
  • Flutter 앱의 최상단에 선언해 사용

3. MaterialApp vs CupertinoApp

  • MaterialAppGoogle의 디자인
  • CupertinoAppApple의 디자인

4. Scaffold

  • MaterialApp이 앱의 기본적인 구조와 디자인을 잡아준다면 Scaffold는 각 페이지의 구조를 잡아주는 위젯
  • AppBar, BottomNavigation, FloatingActionButton 등의 구조를 제공
  • 페이지의 주 요소는 body속성에 선언해 사용

5. 그럼 직접 구현하면 되는 거 아닌가?

  • 가능하지만, 이미 사용자들이 익숙한 디자인과 구조를 구현해 놓았기 때문에 Scaffold를 사용하면 사용자 경험에 고민할 시간을 줄일 수 있습니다.

  • MaterialApp은 그림일기장. Scaffold는 그림일기장의 각 페이지!

0개의 댓글