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

Nir*_*mar 3 flutter

这些是我得到的错误

这是我的 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,
  };
});
Run Code Online (Sandbox Code Playgroud)

}

double get totalSpending {
  return groupedTransactionValues.fold(0.0, (sum, item) {
  return sum + item['amount']; 
Run Code Online (Sandbox Code Playgroud)

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

});
Run Code Online (Sandbox Code Playgroud)

}

@override
Widget build(BuildContext context) {
  return Card(
    elevation: 6,
    margin: EdgeInsets.all(20),
    child: Row(
        children: groupedTransactionValues.map((data) {
      return ChartBar(
        data['day'],
Run Code Online (Sandbox Code Playgroud)

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

        data['amount'],
Run Code Online (Sandbox Code Playgroud)

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

        (data['amount'] as double) / totalSpending,
      );
    }).toList()));
Run Code Online (Sandbox Code Playgroud)

我不知道我哪里出错了

Pat*_*ara 6

该方法groupedTransactionValues正在返回 的地图Object。相反,返回一个dynamic由运行时确定的类型的映射。更改行:

List<Map<String, Object>> get groupedTransactionValues {
Run Code Online (Sandbox Code Playgroud)

到:

List<Map<String, dynamic>> get groupedTransactionValues {
Run Code Online (Sandbox Code Playgroud)


小智 5

将对象更改为动态:

 (List<Map<String, Object>> get groupedTransactionValues { ) 
Run Code Online (Sandbox Code Playgroud)

如果错误没有解决,请尝试添加:

 data['day'] as String,
 data['amount'] as double,
Run Code Online (Sandbox Code Playgroud)