0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Flutter】ドラムロールUIで生年月日の入力 ~flutter_datetime_picker_plus~

Last updated at Posted at 2025-01-29

はじめに

iOSおよびAndroidアプリで生年月日を入力する際、ドラムロール式のピッカーを使用するのが一般的です。
Flutterでは、flutter_datetime_picker_plus パッケージを利用することで、簡単にクロスプラットフォームで対応できる日付ピッカーを実装できます。
本記事では flutter_datetime_picker_plus を使って、生年月日入力を実装する方法を解説します。

Simulator Screen Recording - iPhone 16 - 2025-01-29 at 16.34.25.gif

【補足】
以前CupertinoDatePickerについての記事を掲載させていただきました。
CupertinoDatePickerはiOS向けのUIになるため、 iOS・Android共通のデザインを適用したい場合はこちらを参考にすると良いかと思います。
またflutter_datetime_picker_plusでは日本語対応時、flutter_localizations等が
なくても良いため若干カスタマイズが楽という利点もあります。
アプリによって良し悪しは変わりますのでどちらも試して良い方を採用していただけましたら幸いです。

目次

  1. flutter_datetime_picker_plusとは
  2. flutter_datetime_picker_plusを使った実装方法
  3. まとめ

flutter_datetime_picker_plusとは

flutter_datetime_picker_plus は、日付および時間を選択できるウィジェットを提供するFlutterのパッケージです。
iOSとAndroid両方のデバイスでネイティブに動作し、ドラムロール式の日付選択UIを簡単に実現できます。
インストールも簡単で、UIのカスタマイズが可能です。

flutter_datetime_picker_plusの公式ドキュメント
https://pub.dev/packages/flutter_datetime_picker_plus

flutter_datetime_picker_plusを使った実装方法

flutter_datetime_picker_plus パッケージを使って、生年月日入力のドラムロール式ピッカーを実装する手順を解説します。

1. パッケージのインストール

まずは flutter_datetime_picker_plus をプロジェクトに追加します。
pubspec.yaml ファイルに以下を追加します。
記載後、flutter pub getコマンドを実行してパッケージをインストールします。

dependencies:
  flutter:
    sdk: flutter
  flutter_datetime_picker_plus: verを記載

※最新verは公式から確認してください。
https://pub.dev/packages/flutter_datetime_picker/versions

2. 生年月日ピッカーの実装

以下のコードで、生年月日選択用のピッカーを実装できます。

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: DatePickerExample(),
    );
  }
}

class DatePickerExample extends StatefulWidget {
  const DatePickerExample({Key? key}) : super(key: key);

  @override
  _DatePickerExampleState createState() => _DatePickerExampleState();
}

class _DatePickerExampleState extends State<DatePickerExample> {
  TextEditingController _dateController = TextEditingController();

  void _showDatePicker() {
    DatePicker.showDatePicker(
      context,
      showTitleActions: true,
      minTime: DateTime(1950, 1, 1),
      maxTime: DateTime.now(),
      onConfirm: (date) {
        setState(() {
          _dateController.text = "${date.year}/${date.month}/${date.day}";
        });
      },
      currentTime: DateTime(2000, 1, 1),
      locale: LocaleType.jp, // 日本語に対応
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('生年月日入力')),
      body: Padding(
        padding: EdgeInsets.all(16),
        child: TextFormField(
          controller: _dateController,
          readOnly: true,
          decoration: InputDecoration(
            labelText: '生年月日',
            fillColor: Colors.white,
            border: OutlineInputBorder(
              borderRadius: BorderRadius.circular(8),
              borderSide: BorderSide(color: Colors.blue, width: 1.5),
            ),
          ),
          onTap: _showDatePicker,
        ),
      ),
    );
  }
}

まとめ

flutter_datetime_picker を使うことで、ドラムロール式の日付ピッカーを簡単に実装できます。
日本語対応も簡単に行える点やクロスプラットフォームでの生年月日入力UIの統一が可能な点で以前掲載したCupertinoDatePickerより実装が容易だと感じました。

誤りや気になる点ございましたら気軽にコメントお願い致します!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?