前回まではダミーデータで動かしていたのですが、DBの構造が決まったのでそちらのデータ構造でコードを動かすことになりました。
目的は、以下のallDataからweightやfoodのDataやWeightを出力することです。
Dart
1var allData = 2[ 3 { key: 2020-09-12=21:36:25:027, 4 data: 5 { name: Jim, 6 sex: Male, 7 weight: 8 { -乱数: 9 { Date: 2020-9-6, 10 Weight: 5.1, 11 }, 12 -乱数: 13 { Date: 2020-9-9, 14 Weight: 5.4, 15 }, 16 }, 17 food: 18 { -乱数: 19 { Data:***, 20 Item:***, 21 }, 22 }, //項目続く
前回のデータ構造では以下の内容でうまくデータを取り出すことができたのですが、
Dart
1for (int i = 0; i < allData.length; i++) { 2 if (allData[i]['data']['name'] != widget.name) continue; 3 4 final weightData = 5 (allData[i]['data'] as Map<String, Map<String, Map>>)['weight']; 6 7 print(weightData); 8 9 for (int j = 0; j < weightData.length; j++) { 10 data.add( 11 DataPoint<DateTime>( 12 value: weightData[j]['value'].toDouble(), 13 xAxis: parseDateString(weightData[j]['dateTime']), 14 ), 15 ); 16 } 17 } 18 data.forEach(print); 19 }
今回のデータ構造だと新たに2つ問題が出てきました。
- 上記コードがtype '_InternalLinkedHashMap<dynamic, dynamic>' is not a subtype of type 'Map<String, Map<String, Map<dynamic, dynamic>>>' in type castと言われ動作しない。
私がこのcastの原則を理解していないので応用が効かず恐縮なのですが、今回の場合どのように書くべきでしょうか?
- この全体構造だとしても、weightやfoodのデータを取ってくるには、別の質問でご回答頂いたfor inでweightを回して、keysを利用すれば良いでしょうか?

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/17 09:47
2020/09/17 10:31
2020/09/17 11:46
2020/09/17 12:41
2020/09/17 13:10
2020/09/17 13:47
2020/09/17 15:17
2020/09/18 08:35
2020/09/19 01:38