⭐️ 개발/플러터

[프로젝트] 우리 처음 만난날 U&I (2) DatePicker 사용

짱구러버 2022. 11. 7. 17:58
728x90

들어가기 앞서...

이번 게시글에는 하트 버튼을 누르면 처음 만난 날을 입력할 수 있는 다이얼로그를 만들것이다.


본문으로...

import 되어 있는 부분을 설명하겠다!

이번에 DatePicker 를 사용하면 자동적으로 import 가 되는 것을 볼 수 있는데,

cupertino.dart 는 Ios 디자인 관련해서 사용할 때 import 하는 package 이고, 

material.dart 는 Andorid 디자인 관련해서 사용할 떄 import 하는 package 이다.

 

showCupertinaoDialog() 을 사용하면 우리가 버튼을 클릭 했을때, 다이얼로그가 나오는 위젯이다.

builder 에는 build 함수마냥 작성을 해주면 된다.

 

 

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
...
IconButton(
    iconSize: 60.0,
    onPressed: () {
      showCupertinoDialog(context: context, builder: (BuildContext context){
        return Container(

        );
      });
    },
    icon: Icon(
      Icons.favorite,
      color: Colors.red,
    )),
...

 하트 아이콘을 클릭했더니, builder 안의 Container 가 실행된 모습이다! 아직은 아무것도 작성을 한게 없어서 뭐가 씌워진것처럼 어두워졌다!

하트 아이콘을 누른 모습

여기서 스타일을 조금 수정을 해주자!

color: Colors.white,
height: 300.0,

스타일 적용 후 하트 아이콘 클릭 후 모습

하지만 결과 모습이 높이 300 이라기엔 너무나도 길게 나왔다.

그 이유는 어디에 정렬을 해야하는지 알수 없으면 플러터 프레임 워크는 최대한의 사이즈로 먹어라! 라고 되어있기 떄문이다.

그렇기에 새로운 위젯을 한번 사용해보자!

...
return Align(
	alignment: Alignment.bottomCenter,
    child: Container(
    	color: Colors.white,
        height: 300.0,
    );
);
...

 

꿀팁💡 위젯이 갑자기 앱 전체를 덮는다? 해결방법은? 💡
위젯에 특정 사이즈를 정했는데 앱 화면 전체를 덮는다면 플러터 프레임 워크에서 위젯이 어디에 정렬해야하는지 모르기 떄문이다.
그럴때 Align () 위젯을 사용해서 child 의 위치를 지정해주면 된다!
  • 이제는 닫아보자!

지금까지 하트 아이콘을 눌러서 열기만 했지, 닫는 함수는 만들지 못해서 계속 HoteRestart 만 해왔다! showCupertinoDialog() 위젯에는 barrierDismissible 이라는 파라미터가 있다 defualt 는 false 지만 true 로바꿔주면! 영상에 나오듯이 Container() 의 밖에 부분을 클릭하면 닫히는 것을 볼 수 있다!

닫힘

 

  • 날짜를 클릭할 수 있게끔 해주자!

날짜를 나오게 하려면 DatePicker 를 사용해 볼 것이다.

DatePicker 사용법은 매우 간단하다.

...
return Align(
    alignment: Alignment.bottomCenter,
    child: Container(
      color: Colors.white,
      height: 300.0,
      child: CupertinoDatePicker(
        mode: CupertinoDatePickerMode.date,
        onDateTimeChanged: (DateTime date) {
          print(date);
        },
      ),
    ),
  );
...

mode 에는 날짜를 고르는 것으로 해주고, 필수로 필요한 파라미터는 onDateTimeChanged이다. on 이 들어갔으니, 날짜가 바뀌었을때 라고 생각할 수있고, 함수인 것을 앓 수 있다. DateTime date 라고 첫번째 인수에 들어갈 것을 대충 짐작할 수 있다. 이걸 모르겠다면, Go to ~ 로 함수 설명을 보러 가보자!

제너릭에 DateTime 날짜가 들어가는 것을 볼 수 있다! 한번더 Go to ~해보겠다

<T>  의 값이 DateTime 이라는 것이다.

터미널에서 결과를 보자! 스크롤 할때 마다 print 되는것을 볼 수있다!

여담으로 애플의 본사 위치가 Cupertino 라고 한다.


끝으로...

  1. DatePicker 의 사용법을 알았고 적용할 줄 알았다!
  2. Cupertino 를 사용해 다이얼로그가 나오게 하였고, 백그라운드를 클릭하면 사라지게 만들줄 안다!

728x90