【Flutter】iOS風(Cupertino)のDatePickerを表示する方法

iOS風(Cupertino)のDatePickerを表示する方法

未経験から最短3カ月でプログラマーへ!!【0円スクール】

この記事は約2分で読むことができます。

この記事でわかること

  • iOS風のDatePickerを表示する方法
  • DatePickerの動作を制御する方法

目次 閉じる

はじめに

Flutterでアプリを開発する際、iOSユーザー向けに親しみやすいUIを提供したい場合、Cupertinoウィジェットを使うことでiOS風のデザインを簡単に実現できます。この記事では、iOS風のDatePicker(日時選択)の表示方法を解説します。特に、初心者でも理解しやすいように具体的なコード例とともに説明します。

ポイント1:CupertinoDatePickerで日付選択ウィジェットを表示する

CupertinoDatePickerは、iOS風の日時選択ウィジェットです。これを使うことで、iOSネイティブアプリのようなインターフェースをFlutterで簡単に実装できます。

Dart
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は、日時選択のモードや初期値、最小・最大の日時範囲をカスタマイズできます。これにより、ユーザーが選べる日時を制限したり、特定の日付をデフォルトで表示させたりできます。

Dart
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!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です