この記事は約2分で読むことができます。
この記事でわかること
- iOS風のDatePickerを表示する方法
- DatePickerの動作を制御する方法
Flutterでアプリを開発する際、iOSユーザー向けに親しみやすいUIを提供したい場合、Cupertinoウィジェットを使うことでiOS風のデザインを簡単に実現できます。この記事では、iOS風のDatePicker(日時選択)の表示方法を解説します。特に、初心者でも理解しやすいように具体的なコード例とともに説明します。
ポイント1:CupertinoDatePickerで日付選択ウィジェットを表示する
CupertinoDatePicker
は、iOS風の日時選択ウィジェットです。これを使うことで、iOSネイティブアプリのようなインターフェースをFlutterで簡単に実装できます。
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
DateTime _selectedDate = DateTime.now(); // 選択された日付を保持する変数
@override
Widget build(BuildContext context) {
return CupertinoApp(
home: CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar(
middle: Text('Cupertino DatePicker'),
),
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'選択された日付: ${_selectedDate.toLocal()}',
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
CupertinoButton(
child: Text('日付を選択'),
onPressed: () {
showCupertinoModalPopup(
context: context,
builder: (_) => Container(
height: 250,
color: CupertinoColors.white,
child: CupertinoDatePicker(
initialDateTime: _selectedDate,
mode: CupertinoDatePickerMode.date, // 日付のみ選択
onDateTimeChanged: (DateTime newDate) {
setState(() {
_selectedDate = newDate; // 選択された日付を更新
});
},
),
),
);
},
),
],
),
),
),
);
}
}
ユーザーが日付をスクロールするだけで直感的に日付を選択でき、見た目もiOS風です。

ポイント2:CupertinoDatePickerの設定をカスタマイズする
CupertinoDatePicker
は、日時選択のモードや初期値、最小・最大の日時範囲をカスタマイズできます。これにより、ユーザーが選べる日時を制限したり、特定の日付をデフォルトで表示させたりできます。
import 'package:flutter/cupertino.dart';
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
DateTime _selectedDate = DateTime.now();
@override
Widget build(BuildContext context) {
return CupertinoApp(
home: CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar(
middle: Text('Cupertino DatePicker カスタマイズ'),
),
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'選択された日付: ${_selectedDate.toLocal()}',
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
CupertinoButton(
child: Text('日付を選択'),
onPressed: () {
showCupertinoModalPopup(
context: context,
builder: (_) => Container(
height: 250,
color: CupertinoColors.white,
child: CupertinoDatePicker(
initialDateTime: _selectedDate,
mode: CupertinoDatePickerMode.dateAndTime, // 日付と時間の選択
minimumDate: DateTime(2022, 1, 1), // 最小の日付
maximumDate: DateTime(2024, 12, 31), // 最大の日付
onDateTimeChanged: (DateTime newDate) {
setState(() {
_selectedDate = newDate;
});
},
),
),
);
},
),
],
),
),
),
);
}
}
minimumDateやmaximumDateで、選択可能な日時の範囲を設定できます。これにより、過去や未来の日付選択を制限することが可能です。

この記事では、FlutterでiOS風のDatePickerを表示する方法を紹介しました。Cupertinoウィジェットを使うことで、iOSネイティブアプリのようなデザインを簡単に実現できます。また、日時の選択方法や範囲を柔軟にカスタマイズできるため、アプリのニーズに合わせて実装が可能です。
【この記事のポイント】
CupertinoDatePickerでiOS風の日時選択UIを作成する方法
日付選択モードや範囲のカスタマイズ方法
ご質問があれば、どうぞお気軽にお尋ねください。
それでは、Happy Fluttering!