(List型を扱う場合の注意点はこちら)
データクラスとしてあったら便利なメソッド群(copyWith・fromJson・toJsonなど)を、コマンド一発で自動生成してくれる「Dart Data Class Plugin」という、Android Studio付属の非常に便利なプラグイン(≠パッケージ)があります。
これを使って、DateTime型を変換させると、「fromMap」メソッド及び「toMap」メソッドはこのような感じになりますが、
そのままの状態で、CloudFirestoreデータベース等での読み書きを実行すると、
‘String’ is not a subtype of type ‘DateTime’ in type cast
というエラーが出て、うまくいかないことがあります。
その場合は、
fromMapメソッドの
postDateTime: map['postDateTime'] as DateTime
の箇所を、DateTime.parseメソッドを使って、一旦String型に型変換したものを解析し、
postDateTime: DateTime.parse(map['postDateTime'] as String)
toMapメソッドの
'postDateTime': this.postDateTime
の箇所を、DateTime#toIso8601Stringメソッドを使って、表記フォーマットをISO形式に変換してやるとうまくいきます。
'postDateTime': this.postDateTime.toIso8601String(),
(詳しくは、以下の動画で解説していますので、よろしければご覧ください)