[Flutter]「Dart Data Class Plugin」でList型を扱う場合の注意点

このページには広告が含まれる場合があります。

 

(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メソッドに関する解説も詳しくしています)

こんな記事も読まれています

イチオシ

40代から感じるモヤモヤを解消できる 無料動画セミナー

あすコロ式・40代からの人生アップデート【新】戦略

アラフォーでキャリアを失ったバリバリ左脳人間・スピリチュアル耐性ゼロの元金融マンが、人生どん底から立ち上がる過程でたどり着いた「人生再構築メソッド」。40代・50代を過ぎて多くの人が感じる「このままでいいんかな?」「この先どうしたらいいかわからない」というモヤモヤを解消し、人生後半戦をアップデートさせる【新】戦略。

今すぐ無料で動画セミナー(80分)を見る ▶

TOP