showDatePickerとは
日付選択をするカレンダーを表示する。
今回のサンプルはボタンを押すとカレンダーが表示され、選択した日付を変数に設定する。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F3743467%2F52f49d82-a100-9e0f-0516-04823edb2f89.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=45068b21ea5b59b852c65a1b50585425)
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F3743467%2Fd08c3432-76cd-3863-6721-cebdc455616f.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=5a664f0f6e04356c7dbdc27cfbea90c6)
選択した日付ボタンを押すとコンソールに日付が表示される。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F3743467%2F8080fa7e-9a84-3de7-20f1-ac20fae51240.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=ca880675210e1bcde99d356bc03b0353)
サンプルコード
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
// MyAppクラス: アプリのルートウィジェットを定義するStatelessWidget。
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('showDatePicker'),
// AppBarのタイトルを設定。
),
body: Home(),
// HomeウィジェットをScaffoldのbodyとして使用。
),
);
}
}
// Homeクラス: 日付選択機能を提供するStatelessWidget。
class Home extends StatelessWidget {
const Home({
super.key,
});
@override
Widget build(BuildContext context) {
// 変数birthdayを宣言。選択された日付を保持する。
DateTime? birthday;
return Center(
// Centerウィジェットで子ウィジェットを中央に配置。
child: Column(
// Columnウィジェットで子ウィジェットを垂直方向に並べる。
children: [
ElevatedButton(
// 日付選択用のボタン。
onPressed: () async {
// ボタンが押されたときのアクション。
birthday = await showDatePicker(
context: context,
initialDate: DateTime(DateTime.now().year - 10),
firstDate: DateTime(DateTime.now().year - 100),
lastDate: DateTime(DateTime.now().year),
// showDatePickerダイアログを表示し、ユーザーからの入力を待つ。
);
},
child: Text('日付選択'),
// ボタンのテキスト。
),
ElevatedButton(
onPressed: () {
// 選択した日付表示用のボタン。
print('$birthdayを選択');
// コンソールに選択した日付を出力。
},
child: Text('選択した日付'),
// ボタンのテキスト。
)
],
crossAxisAlignment: CrossAxisAlignment.center,
// 子ウィジェットを中央揃えに設定。
),
);
}
}