我正在 Flutter 中制作個人費用跟蹤器應用程式。我想輸出與每周總費用相比的每日費用的百分比。所以,我需要Double通過.fold()方法獲取資料型別中一周的總和。但檢查員顯示“引數型別'物件?' 不能分配給引數型別 'num'。” 我累都as double和as int。
import 'package:flutter/material.dart';
import 'package:flutter_app_module3/models/transaction.dart';
import 'package:intl/intl.dart';
import './chart_bar.dart';
class Chart extends StatelessWidget {
final List<Transaction> recentTransaction;
Chart(this.recentTransactions);
List<Map<String, Object>> get groupedTrandactionValues {
return List.generate(7, (index) {
final weekDay = DateTime.now().subtract(
Duration(days: index),
);
var 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 groupedTrandactionValues.fold(0, (prev, element) {
return prev element['amount'];
});
}
@override
Widget build(BuildContext context) {
print(groupedTrandactionValues);
return Card(
child: Row(),
);
}
}
groupTransactionValues 回來:
[{"Day": "W", "amount": 86.52},
{"Day": "T", "amount": 45.0},
{"Day":" M"," amount": 23.0},
{"Day": "S", "amount": 45.0},
{"Day": "S", "amount": 67.0},
{"Day": "F", "amount": 98.0},
{'Day': "T", "amount": 45.0}];
});
}
我試過 as double
double get totalSpending {
return groupedTrandactionValues.fold(0.0, (prev, element) {
return prev element['amount'] as double;
});
}
還有as int:
int get totalSpending {
return groupedTrandactionValues.fold(0, (prev, element) {
return prev element['amount'] as int;
});
}
uj5u.com熱心網友回復:
更改
List<Map<String, Object>> get groupedTrandactionValues
為
List<Map<String, dynamic>> get groupedTrandactionValues
uj5u.com熱心網友回復:
當從地圖中獲取元素時,element['amount']它可以為空,所以這樣做。
return prev (element['amount'] ?? 0.0);
這意味著如果元素中的數量由于某種原因為空,它將添加 0.0
編輯:這在飛鏢中對我有用
List<Map<String, Object>> data = [
{"Day": "W", "amount": 86.52},
{"Day": "T", "amount": 45.0},
{"Day": "M", "amount": 23.0},
{"Day": "S", "amount": 45.0},
{"Day": "S", "amount": 67.0},
{"Day": "F", "amount": 98.0},
{'Day': "T", "amount": 45.0},
];
double totalSpending() {
return data.fold(0.0, (double prev, Map<String, Object> element) {
return prev (element['amount'] as double? ?? 0.0);
});
}
var total = totalSpending();
print(total);
409.52
(element['amount'] as double? ?? 0.0) 表示將金額作為雙倍或空值,如果它是空值,請使用 0.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/359638.html
