【Flutter】Listの要素を型変換したい(Dart/Firestore)

Flutter

作成しているアプリのデータは、Firestoreに保存するようにしています。

Firestoreからリストやマップを取得した際に、List<dynamic>や、Map<String, dynamic>となっていました。

要素をStringやIntに変換するやり方が、私はあまり見たことのない書き方だったので備忘も兼ねてご紹介します!

変換には、castメソッドを使用する

Flutter(Dart)にて、リストやマップの要素を変換する場合には、castというメソッドを使用します。

Listの要素を変換する

NG例

List<dynamic> list1 = ['blue', 'goat'];
List<String> list2 = list1 as List<String>; //エラーです

OK例

List<dynamic> list1 = ['blue', 'goat'];
List<String> list2 = list1.cast<String>(); // 変換成功!

Mapの要素を変換する

NG例

Map<String, dynamic> map1 = {'blue': 'goat'};
Map<String, String> map2 = map1 as Map<String, String>; // エラーです

OK例

Map<String, dynamic> map1 = {'blue': 'goat'};
Map<String, String> map2 = map1.cast<String, String>(); // 変換成功!
タイトルとURLをコピーしました