这是我的图表.dart文件
import 'package:flutter/material.dart';
import 'package:udemy_expenses_app/widgets/chart_bar.dart';
import '../models/tanscations.dart';
import 'package:intl/intl.dart';
import './chart_bar.dart';
class Chart extends StatelessWidget {
final List<Transaction> recentTransactions;
Chart(this.recentTransactions);
List<Map<String, Object>> get groupedTransactionValues {
return List.generate(7, (index) {
final weekDay = DateTime.now().subtract(
Duration(
days: index,
),
);
double totalSum = 0.0;
for (var i = 0; i < recentTransactions.length; i++) {
if (recentTransactions[i].date.day == weekDay.day &&
recentTransactions[i].date.month == weekDay.month &&
recentTransactions[i].date.year == weekDay.year) {
totalSum += recentTransactions[i].amount;
}
}
return {
'day': DateFormat.E().format(weekDay).substring(0, 1),
'amount': totalSum,
};
});
}
double get totalSpending {
return groupedTransactionValues.fold(0.0, (sum, item) {
return sum + item['amount'];
// Error: A value of type 'Object?' can't be assigned to a variable of type 'num'.
});
}
@override
Widget build(BuildContext context) {
return Card(
elevation: 6,
margin: EdgeInsets.all(20),
child: Row(
children: groupedTransactionValues.map((data) {
return ChartBar(
data['day'],
// Error: The argument type 'Object?' can't be assigned to the parameter type 'String'.
data['amount'],
// Error: The argument type 'Object?' can't be assigned to the parameter type 'String'.
(data['amount'] as double) / totalSpending,
);
}).toList()));
}
}
我不知道我哪里做错了
6条答案
按热度按时间yrwegjxp1#
方法
groupedTransactionValues
返回Object
的Map。相反,返回dynamic
的Map,这是运行时确定的类型。更改行:致:
pinkon5k2#
在以下位置将对象更改为动态:
如果错误未解决,请尝试添加:
uidvcgyl3#
我有一个错误:
在本例中:
它在catch中给出了一个错误,因为它的类型是**
Object
,而我的OnePageLoadFailed
需要的类型是Error
**,所以我把它保留为:我希望你能帮助解决别人的问题,以及我,特别是在
Null Safety
条目。:Dzy1mlcev4#
tktrz96b5#
参数类型“Object?”不能赋给参数类型“String”。因此,必须如下所示对其进行更改,以便将其分别视为String和double。
使用
同样地,代替
使用
vi4fp9gy6#
尝试转换
到
那么
}
将项['amount']解析为双精度
对我来说非常有效!