Flutterで以下のallDataを、build widget内でネストしたfor文を用いて、利用しようとしています。
Dart
1// allData 2 3var allData = [ 4 { 5 'key': '2020-09-11=17:25:57:351', 6 'name': 'Jim', 7 'data': { 8 'weight': [ 9 { 10 'dateTime': '2020, 8, 25', 11 'value': 1450, 12 }, 13 { 14 'dateTime': '2020, 8, 26', 15 'value': 1890, 16 }, 17 ], 18 } 19 }, 20]
目指していることは、データにある各weightのvalueを、DataPoint内のvalueにそれぞれ受け渡して利用することです。
ここで問題が2つあります。
- 現状の以下のコードをそのまま実行すると、type 'int' is not a subtype of type 'double'と言われます。(doubleの型指定は見当たらないのですが)
Dart
1// コード 2 3 Widget build(BuildContext context) { 4 name = widget.name; 5 allCData = widget.allData; 6 7 for (var i = 0; i < allData.length; i++) { 8 if (allData[i]['name'] == name) { 9 for (var j = 0; j < allData[i]['data']['weight'].length; j++) { 10 dynamic eachWeight = allData[i]['data']['weight'][j]['value']; 11 print(eachWeight); // 1450とだけ返します 12 dynamic data = [ 13 DataPoint<DateTime>( 14 value: eachWeight, xAxis: DateTime(2020, 8, 24)), 15 // eachWeightのところに1450とハードコーディングすれば、正常に動きます。 16 ]; 17 18 19 return Scaffold( 20 appBar: AppBar( 21 22 // dataはこの下の方でも使います。
2.eachWeightをprintすると、1450のみがconsoleに出力されます。
もしかすると上記の書き方では、うまく全ての変数を取り出して利用できないのでしょうか?
その場合、どのように書き直せば良いでしょうか。
jのfor文をforEachで書いた場合、以下のように言われます。
A build function returned null.

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/16 01:22
2020/09/16 02:50
2020/09/16 08:10
2020/09/16 08:19
2020/09/16 08:28
2020/09/16 09:52
2020/09/16 10:13