我正在编写类的代码
class _DashboardState使用SingleTickerProviderStateMixin { late Future _summaryData;Future_chartData;
@override
initState() {
super.initState();
Future<Map> data = fetchData();
_summaryData= data['summaryData']; // ERROR HERE
_chartData= data['chartData']; // ERROR HERE
}
Future<Map> fetchData() async {
...
}
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: _summaryData,
builder: ...);
}
但我面临一个错误The operator '[]' isn't defined for the type 'Future<Map<dynamic, dynamic>>'. Try defining the operator '[]'.
。
请告诉我原因和如何解决?谢谢!
2条答案
按热度按时间4zcjmb1e1#
这里的问题是您试图从
Future<Map>
而不是Map
访问summaryData和chartData。在你的fetchData()
函数中,让它返回Map
而不是Future<Map>
,如下所示:这将返回一个
Map
,您应该能够在其中访问所需的数据。Happy Coding:)
1qczuiv02#
将您的代码更改为以下内容。
由于await不能被添加到init方法中,我们创建一个单独的方法并将其标记为async以等待API调用数据。