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

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

今すぐ無料お試しキットを受け取る

はじめての方へ


みんプロ式プログラミング講座体系・ラインナップ
みんプロ式プログラミング講座受講の流れ(割引特典利用方法)
サイトマップ(みんプロHPコンテンツ一覧)
運営会社概要

みんプロ作成アプリ





今すぐ無料お試しキットを受け取る
TOP