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