问题描述
我正在构建一个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 '不是'可迭代'类型的子类型”。我了解错误,无法迭代快照,但是不知道该如何检索数据
解决方法
我相信传递,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: double.parse(rawData['value']),xAxis: DateTime.parse(rawData['date'])));
,
您应该使用AsyncSnapshot.data.data来获取地图。
>>> from wand.image import Image
Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/wand/api.py",line 151,in <module>
libraries = load_library()
File "/usr/local/lib/python3.8/site-packages/wand/api.py",line 140,in load_library
raise IOError('cannot find library; tried paths: ' + repr(tried_paths))
OSError: cannot find library; tried paths: []
During handling of the above exception,another exception occurred:
Traceback (most recent call last):
File "<stdin>",line 1,in <module>
File "/usr/local/lib/python3.8/site-packages/wand/image.py",line 18,in <module>
from . import assertions
File "/usr/local/lib/python3.8/site-packages/wand/assertions.py",line 155,in <module>
from .color import Color # noqa: E402
File "/usr/local/lib/python3.8/site-packages/wand/color.py",line 10,in <module>
from .api import library
File "/usr/local/lib/python3.8/site-packages/wand/api.py",line 175,in <module>
raise ImportError('MagickWand shared library not found.\n'
ImportError: MagickWand shared library not found.
You probably had not installed ImageMagick library.
Try to install:
http://docs.wand-py.org/en/latest/guide/install.html