FlutterFlow 今日の日付でフィルターする

Flutterflowでは、CurrentTimeでフィルターをかけても、今日の日付だけでフィルターすることができません。これは、CurrentTimeには時間まで含まれており、日付の月日だけでなく、時間も一致させる必要があるためです。

そこで、Custom Actionを使って、今日の日付でフィルターをかける方法を説明します。

完成イメージ

今日が6/19 だとして、以下のように6/18,6/19,6/20 が表示されるデータがあった場合に、6/19だけ表示するようにします。

CustomActionの準備

今回の原理としては、フィルターをするときに以下の2つの関数を作成します。

現在の日付の0時 =today0ji
現在の日付の23時59分 =today24ji

最終的には、この2つの関数の間にあるのが、今日の日付のデータということになります。

today0ji のコード

import 'dart:convert';
import 'dart:math' as math;

import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:intl/intl.dart';
import 'package:timeago/timeago.dart' as timeago;
import '/flutter_flow/lat_lng.dart';
import '/flutter_flow/place.dart';
import '/flutter_flow/uploaded_file.dart';
import '/flutter_flow/custom_functions.dart';
import '/backend/backend.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import '/auth/firebase_auth/auth_util.dart';

DateTime? today0ji() {
  /// MODIFY CODE ONLY BELOW THIS LINE

  //  Get today's date out  However, the time shall be midnight
  return DateTime.now().subtract(Duration(
      hours: DateTime.now().hour,
      minutes: DateTime.now().minute,
      seconds: DateTime.now().second,
      milliseconds: DateTime.now().millisecond,
      microseconds: DateTime.now().microsecond));

  /// MODIFY CODE ONLY ABOVE THIS LINE
}

today24jiのコード

import 'dart:convert';
import 'dart:math' as math;

import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:intl/intl.dart';
import 'package:timeago/timeago.dart' as timeago;
import '/flutter_flow/lat_lng.dart';
import '/flutter_flow/place.dart';
import '/flutter_flow/uploaded_file.dart';
import '/flutter_flow/custom_functions.dart';
import '/backend/backend.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import '/auth/firebase_auth/auth_util.dart';

DateTime? today24ji() {
  /// MODIFY CODE ONLY BELOW THIS LINE

  // Today Month day However, please output the time as 23:59:00
// Get today's date, but set the time to 23:59:00
  return DateTime.now()
      .subtract(Duration(
          hours: DateTime.now().hour,
          minutes: DateTime.now().minute,
          seconds: DateTime.now().second,
          milliseconds: DateTime.now().millisecond,
          microseconds: DateTime.now().microsecond))
      .add(Duration(hours: 23, minutes: 59, seconds: 0));

  /// MODIFY CODE ONLY ABOVE THIS LINE
}

また、出力のTypeがDate Timeになっていることを確認してください

Custom Actionの設定

Custom Actionの引数として、フィルター対象のリストを選択します。
Listの Collectionから Greater Than としValueをtoday0jiとします。

同じようにFileter2の設定をします。

Filer2では、Less thanのtoday24ji を設定します。

これで、該当リストのフィルターは、
現在の日付の0時 =today0ji
現在の日付の23時59分 =today24ji でフィルターされます。

まとめ

この方法を使うことで、Flutterflowで今日の日付に基づいたフィルターを簡単に実装することができます。Custom Actionを活用することで、より細かいフィルター条件やロジックを追加することも可能です

この記事を書いた人

tsubasatwi( つばさ)

国立工業高専卒業(新居浜工業高等専門学校)
「イベント×IT×営業」のカスタマーサクセスマネージャーとして活躍。セールス→構築管理運用まで全体プロジェクト管理の豊富な経験あり。

・主にITに関するイベント集客/法人営業/開発を担当
・大手通信会社を中心にエンタープライズのIT導入を担当(B2B)

DMMで日本初の NoCodeサロン を運営
「NoCodeCamp プログラミングを使わないIT開発 」
https://lounge.dmm.com/detail/2549/