영감과 통찰로 생성된 6 소스

img6

img7

img8

img9

img10

img11

소개

  • Flutter를 사용하여 D-Day 계산기를 만드는 방법에 대해 알아봅니다.

  • D-Day 계산기는 특정 날짜부터 경과한 일수를 계산하여 표시하는 앱입니다.

  • Flutter의 DateTime 클래스를 사용하여 날짜를 비교하고 차이를 계산할 수 있습니다.

  • CupertinoDatePicker를 사용하여 날짜를 선택할 수 있는 UI를 구현할 수 있습니다.

  • Flutter의 ThemeData를 사용하여 앱의 스타일을 통일할 수 있습니다.

프로젝트 목표 [1]

  • 폰트 적용: pubspec.yaml 파일을 수정하여 커스텀 폰트를 적용합니다.

  • DateTime 사용: 날짜를 비교하고 차이를 계산하기 위해 DateTime 클래스를 사용합니다.

  • MediaQuery 사용: MediaQuery.of(context)를 사용하여 화면 크기에 맞게 UI를 조정합니다.

  • DatePicker 사용: CupertinoDatePicker를 사용하여 날짜 선택 기능을 구현합니다.

  • 여러 위젯으로 코드 정리: StatelessWidget을 사용하여 코드를 모듈화합니다.

img6

레이아웃 작업 [1]

  • Scaffold 및 Column 사용: 기본적인 화면 레이아웃을 구성합니다.

  • Scaffold: 앱의 기본 화면 구조를 잡습니다.

  • Column: 자식 위젯들을 세로로 나열합니다.

  • Expanded 위젯: 상단과 하단의 비율을 조절할 수 있습니다.

  • Image.asset: 이미지 파일을 화면에 표시합니다.

img6

테마 적용 [2]

  • ThemeData 사용: 전체적인 앱의 스타일을 통일할 때 사용하는 클래스입니다.

  • fontFamily: 기본 폰트를 설정합니다.

  • textTheme: 텍스트 스타일을 미리 정의할 수 있습니다.

  • Theme.of(context).textTheme: 미리 정의한 스타일을 텍스트에 적용합니다.

  • Icon의 경우 색상이 각각 다른 경우가 많기 때문에 theme를 사용하지 않고 직접 지정합니다.

날짜 선택 기능 [1]

  • CupertinoDatePicker 사용: 날짜를 선택하는 기능을 구현합니다.

  • showCupertinoDialog: 날짜 선택 다이얼로그를 나타냅니다.

  • IconButton: 클릭하면 날짜 선택 다이얼로그가 나타나도록 합니다.

  • onDateTimeChanged: 날짜가 변경될 때마다 실행되는 콜백 함수입니다.

  • 선택된 날짜에 따라 D-Day를 계산하고 화면에 표시합니다.

img6

img7

D-Day 계산 방법 [3]

  • DateTime 클래스의 difference() 메서드를 사용하여 두 날짜 간의 차이를 계산합니다.

  • difference()는 두 날짜 간의 차이를 Duration 객체로 반환합니다.

  • inDays 속성을 사용하여 차이를 일 단위로 반환합니다.

  • 기준 날짜와 현재 날짜 사이의 차이를 계산하여 D-Day 형식으로 출력합니다.

  • 미래의 D-Day: difference > 0이면 D- 형식으로 출력합니다.

관련 동영상

<br><br>

<div class="-md-ext-youtube-widget"> { "title": "Flutter: date, time related functions and widgets # 1/3 - \ud50c\ub7ec\ud130 ...", "link": "https://www.youtube.com/watch?v=IUicksGNPYU", "channel": { "name": ""}, "published_date": "Mar 1, 2020", "length": "6:39" }</div>

<div class="-md-ext-youtube-widget"> { "title": "\uc704\uc82f\uc5d0\uc11c \ub370\uc774\ud0c0 \ubcf4\ub0b4\uace0 \ubc1b\uc544\uc624\ub294 \ubc29\ubc95! [Flutter]", "link": "https://www.youtube.com/watch?v=cuT1koj18yU", "channel": { "name": ""}, "published_date": "Feb 26, 2020", "length": "11:17" }</div>

<div class="-md-ext-youtube-widget"> { "title": "\ud50c\ub7ec\ud130\ud50c\ub85c\uc6b0FlutterFlow_\uc644\uc804\ucd08\uae09_42\ud3b8\uc704\uc82f\ud3b8 ...", "link": "https://www.youtube.com/watch?v=Soxn2rN7Ajg", "channel": { "name": ""}, "published_date": "Oct 30, 2023", "length": "7:07" }</div>