Я получаю сообщение об ошибке, что метод "+" был вызван на ноль - PullRequest
1 голос
/ 29 февраля 2020

В настоящее время я играю с курсом по флаттеру в 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(),
      ),
    );
  }
}

Ответы [ 2 ]

2 голосов
/ 29 февраля 2020

Я решил это следующим образом: -

сделав значение totalSum = 0

double totalSum = 0
1 голос
/ 29 февраля 2020

Вы получили эту ошибку, потому что вы не указали значение для 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...