首页 > 解决方案 > 参数类型“对象?” 不能分配给参数类型“num”

问题描述

我有 3 个关于无法将对象分配给参数的错误,包括 int、string 和 double 。我正在尝试获取数据以创建一个图表栏来显示和处理数据。它从另一个名为 Transaction 的小部件中获取。在此处输入图像描述

import 'package:flutter/material.dart';
import 'package:personal_expenses_app/model/transaction.dart';
import 'package:intl/intl.dart';
import 'package:personal_expenses_app/widgets/chart_bar.dart';

class Chart extends StatelessWidget {
  
  final List<Transaction> recentTransactions;

  Chart(this.recentTransactions);
 

  List<Map<String, Object>> get groupTransactionValues {
    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 = totalsum + recentTransactions[i].amount;
        }
      }

      // print(DateFormat.E().format(weekDay));
      // print(totalsum);

      return {
        'day': DateFormat.E().format(weekDay).substring(0, 1),
        'amount': totalsum
      };
    }).toList();
  }

  double get totalSpending {
    return groupTransactionValues.fold(0.0, (sum, item) {
      return sum + item['amount'];                         // error  item['amount']
    });
  }

  @override
  Widget build(BuildContext context) {
    return Card(
      elevation: 6,
      margin: EdgeInsets.all(20),
      child: Row(
        children: groupTransactionValues.map((data) {
          return Chartbar(data['day'], data['amount'],        //error data['day'],data['amount']
              (data['amount'] as double) / totalSpending);
        }).toList(),
      ),
    );
  }
}

标签: flutter

解决方案


答案隐藏在您的代码中。将对象转换为双精度。

// replace data['amount'] with following
(data['amount'] as double)

推荐阅读