簡體   English   中英

我在顫振中收到一個錯誤,即在 null 上調用了方法“+”

[英]I am getting a error in flutter that method "+" was called on null

目前我正在使用名為 Personal Expenses 的應用程序在 Udemy 上玩一門關於顫振的課程

我在顫振中收到一個錯誤,即在 null 上調用了方法“+”

錯誤信息 :-

The following NoSuchMethodError was thrown building Chart(dirty):
The method '+' was called on null.
Receiver: null

我的代碼:-


import 'package:personal_expenses/models/transaction.dart';
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';

class Chart extends StatelessWidget {
  final List<Transaction> recentTransaction;
  Chart(this.recentTransaction);

  List<Map<String, Object>> get groupedTransactionValues {
    return List.generate(7, (index) {
      final weekDay = DateTime.now().subtract(
        Duration(days: index),
      );
      double totalSum ;

      for (var i = 0; i < recentTransaction.length; i++) {
        if (recentTransaction[i].date.day == weekDay.day &&
            recentTransaction[i].date.month == weekDay.month &&
            recentTransaction[i].date.year == weekDay.year) {
          totalSum += recentTransaction[i].amount;
        }
      }

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

  @override
  Widget build(BuildContext context) {
    return Card(
      elevation: 6,
      margin: EdgeInsets.all(20.0),
      child: Row(
        children: groupedTransactionValues.map((data) {
          return Text('${data['day']}: ${data['amount']}');
        }).toList(),
      ),
    );
  }
}

我通過以下方式解決了:-

使 totalSum 的值 = 0

double totalSum = 0

您之所以收到該錯誤,是因為在聲明時您沒有為double提供任何值,並且在 Dart 中,每個字段都是Object類型,並且默認情況下其值為null與 java 中 double 獲取0作為默認值不同。

double totalSum; // default value is null
totalSum += 10; // error, because totalSum is null

解決方案:

 double totalSum = 0; // assign some value
 totalSum += 10; // works

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM