Flutter/Dartでのカレンダー実装: 「table_calendar」パッケージの紹介

flutter

はじめに

Flutterはモバイルアプリケーション開発のための人気のあるフレームワークであり、その中には多くの有用なパッケージが含まれています。その中でも、「table_calendar」は、Flutterアプリ内でカレンダー機能を簡単に実装できる注目のパッケージです。この記事では、table_calendarの導入方法と基本的な使用法を紹介します。

初めてのFlutter/Dartマルチプラットフォームアプリ開発チュートリアル
はじめに FlutterはGoogleが開発した、マルチプラットフォームのモバイルアプリ開発のフレームワークです。Flutterを使うと、AndroidとiOSの両方のプラットフォームで同時にアプリを開発することができます。 また、ブラウザ...

初めてのFlutter/Dartマルチプラットフォームアプリ開発チュートリアル

table_calendarの導入

まずは、table_calendarをプロジェクトに追加する必要があります。下記コマンドを実行してプロジェクトにパッケージを追加します。

flutter pub add table_calendar

基本的な使用法

table_calendarは非常にシンプルに使用することができます。以下は、基本的なカレンダーの表示方法です。

class CalendarScreen extends StatefulWidget {
  @override
  _CalendarScreenState createState() => _CalendarScreenState();
}

class _CalendarScreenState extends State {
  CalendarFormat _calendarFormat = CalendarFormat.month;
  DateTime _focusedDay = DateTime.now();
  DateTime _selectedDay = DateTime.now();
  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(title: Text('Table Calendar')),
        body: TableCalendar(
          firstDay: DateTime.utc(1900, 1, 1),
          lastDay: DateTime.utc(2100, 12, 31),
          focusedDay: _focusedDay,
          selectedDayPredicate: (day) => isSameDay(_selectedDay, day),
          calendarFormat: _calendarFormat,
          onDaySelected: (currentDay, focusedDay) {
            setState(() {
              _selectedDay = currentDay;
              _focusedDay = focusedDay;
            });
          },
          onFormatChanged: (format) => setState(() {
            _calendarFormat = format;
          }),
        ));
  }
}

このコード上にあるTableCalendarを使用すると、月毎のカレンダーが表示されます。カレンダーの日付をタップすることで、その日の詳細を表示するなどのカスタマイズも可能です。
各種プロパティを説明すると下記のようになっています。

  • firstDay:カレンダーが選択できる日付の最小値
  • lastDay:カレンダーが選択できる日付の最大値
  • focusedDay:現在選択されている日付
  • selectedDayPredicate、onDaySelected:選択した日付を選択済みとしてマークする
  • calendarFormat:カレンダーを表示するフォーマット(1ヶ月ごと、2週間ごと、1週間ごと)
  • onFormatChanged:カレンダーのフォーマットを動的に変更する

初期表示は下記のように現在の日時が選択されています

 

ほかにも詳細な設定ができる項目として、下記のようなプロパティが用意されています

  • eventLoader:カレンダーにイベントのプロパティを持つことができます。このプロパティはCalendarBuildersなどで利用することができます
  • CalendarBuilders :カレンダーの細かなレイアウト設定ができます
  • locale:カレンダーの言語設定がおこなえます(別途intlパッケージが必要)

まとめ

Flutterの「table_calendar」パッケージは、アプリにカレンダー機能を追加する際の強力なツールです。導入から基本的な使用法までをこの記事で紹介しましたが、公式ドキュメントやpub.devのページでさらなる詳細やカスタマイズ方法を確認できます。Flutterでのアプリ開発をさらに便利に進めるために、このパッケージをぜひ活用してください。