参数类型“对象?”不能分配给参数类型“字符串”

时间:2021-04-23 13:14:49

标签: flutter

These are the errors I get

这是我的 chart.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']; 
<块引用>

错误:“对象?”类型的值不能分配给“num”类型的变量。

});

}

@override
Widget build(BuildContext context) {
  return Card(
    elevation: 6,
    margin: EdgeInsets.all(20),
    child: Row(
        children: groupedTransactionValues.map((data) {
      return ChartBar(
        data['day'],
<块引用>

错误:参数类型“对象?”不能分配给参数类型“字符串”。

        data['amount'],
<块引用>

错误:参数类型“对象?”不能分配给参数类型“字符串”。

        (data['amount'] as double) / totalSpending,
      );
    }).toList()));

} } 我不知道我哪里错了

1 个答案:

答案 0 :(得分:0)

方法 groupedTransactionValues 正在返回 Object 的映射。相反,返回 dynamic 的映射,这是运行时确定的类型。换行:

List<Map<String, Object>> get groupedTransactionValues {

到:

List<Map<String, dynamic>> get groupedTransactionValues {