본문 바로가기

Flutter

datePicker 달력

DatePicker는 사용자가 날짜를 선택할 수 있게 해주는 Flutter의 Material 위젯이다.

showDatePicker() 함수를 사용하여 달력을 보여준다.

Flutter DateTime Picker는 쉽게 사용자가 지정할 수 있고 여러 언어로 날짜 및 시간 선택을 지원한다.

 

 

실행화면

 

날짜를 선택하는 코드

DateTime? pickedDate = await showDatePicker(
                    context: context,
                    initialDate: DateTime.now(),
                    firstDate: DateTime(1950),
                    //DateTime.now() - 오늘 전에는 선택못하게
                    lastDate: DateTime(2100));

                if (pickedDate != null) {
                  print(pickedDate); //pickDate 출력 형식 => 2021-03-10 00:00:00.000
                  String formattedDate =
                      DateFormat('yyyy-MM-dd').format(pickedDate);
                  print(
                      formattedDate); //intl 패키지를 사용하여 형식화된 날짜 출력 =>  2021-03-16
                  setState(() {
                    dateInput.text =
                        formattedDate; //출력 날짜를 TextField 값으로 설정합니다.
                  });
                }

 

전체 코드

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

class datePickerTest extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return _datePickerTest();
  }
}

class _datePickerTest extends State<datePickerTest> {
  TextEditingController dateInput = TextEditingController();

  @override
  void initState() {
    dateInput.text = ""; //set the initial value of text field
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
            title: Text("DatePicker Test"), backgroundColor: Colors.blue),
        body: Container(
            padding: EdgeInsets.all(15),
            height: MediaQuery.of(context).size.width / 3,
            child: Center(
                child: TextField(
              controller: dateInput,
              //TextField의 편집 컨트롤러
              readOnly: true,
              //true로 설정하면 사용자가 텍스트를 편집할 수 없습니다.
              onTap: () async {
                DateTime? pickedDate = await showDatePicker(
                    context: context,
                    initialDate: DateTime.now(),
                    firstDate: DateTime(1950),
                    //DateTime.now() - 오늘 전에는 선택못하게
                    lastDate: DateTime(2100));

                if (pickedDate != null) {
                  print(pickedDate); //pickDate 출력 형식 => 2021-03-10 00:00:00.000
                  String formattedDate =
                      DateFormat('yyyy-MM-dd').format(pickedDate);
                  print(
                      formattedDate); //intl 패키지를 사용하여 형식화된 날짜 출력 =>  2021-03-16
                  setState(() {
                    dateInput.text =
                        formattedDate; //출력 날짜를 TextField 값으로 설정합니다.
                  });
                } else {}
              },
            ))));
  }
}

'Flutter' 카테고리의 다른 글

listview 안에 listview사용하기  (0) 2022.12.08
이미지 등록하기  (0) 2022.12.06
Category_detail_page  (0) 2022.12.04
lesson_detail_page  (0) 2022.12.04
home_page  (0) 2022.12.02