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を活用することで、より細かいフィルター条件やロジックを追加することも可能です