[英]¿How can I iterate a snapshot in Flutter?
我正在構建一個顫振應用程序,我正在嘗試根據使用計算器獲得的值創建一個時間圖,所以我用 sqflite 創建了一個數據庫,並且數據庫中的每個元素都有一個 Id、一個日期和一個值.
import 'package:bezier_chart/bezier_chart.dart';
import 'package:flutter/material.dart';
import 'package:mi_working_app/components/bmi_chart.dart';
import 'package:mi_working_app/services/statistics_bmi_dbhelper.dart';
class StatisticsWidget extends StatefulWidget {
@override
_StatisticsWidgetState createState() => _StatisticsWidgetState();
}
class _StatisticsWidgetState extends State<StatisticsWidget> {
BMIDbHelper bmihelper;
@override
void initState() {
super.initState();
bmihelper = BMIDbHelper();
}
@override
Widget build(BuildContext context) {
return Column(
children: [
FutureBuilder(
future: bmihelper.getBMIs(),
builder: (BuildContext context, AsyncSnapshot bmisnapshot) {
if (bmisnapshot.hasData) {
print(bmisnapshot.data);
print(bmisnapshot.data.length);
return Container(
child: BMITimeChart(
data: data(bmisnapshot),
));
} else {
return Center(
child: CircularProgressIndicator(),
);
}
}),
],
);
}
}
現在要創建圖表,我需要從每個元素中提取日期和值,為此我這樣做了:
List<DataPoint<dynamic>> data(rawData) {
List bmiDataList;
for (Map m in rawData) {
bmiDataList.add(DataPoint<DateTime>(
value: double.parse(rawData.value['value']),
xAxis: DateTime.parse(rawData.value['date'])));
}
print(bmiDataList);
return bmiDataList;
}
現在我得到“類型'AsyncSnapshot<List>'不是'Iterable'類型的子類型”。 我理解錯誤,我無法迭代快照,但我不知道我還能如何檢索數據
我相信通過, bmisnapshot.data
應該解決你的錯誤而不是通過 bmisnapshot,
return Container(
child: BMITimeChart(
data: data(bmisnapshot.data),
),);
如果您要使用列表方法,也要始終初始化您的列表,否則您將得到一個NoSuchMethodError
因為它在 null 上被調用;
List bmiDataList = [];
我也不確定這是否正確,
value: double.parse(rawData.value['value']),
xAxis: DateTime.parse(rawData.value['date'])));
由於 AynscSnapshot 沒有 value 屬性,並且由於您已經傳入數據,因此您應該能夠像這樣提取值
value: double.parse(rawData['value']),
xAxis: DateTime.parse(rawData['date'])));
您應該使用 AsyncSnapshot.data.data 來獲取地圖。
if (bmisnapshot.hasData) { print(bmisnapshot.data); print(bmisnapshot.data.length); return Container( child: BMITimeChart( data: data(bmisnapshot.data.data), ));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.