首页 > 解决方案 > 没有抛出这样的 Methoderror。方法 + 在 null 上被调用

问题描述

我正在通过课程构建应用程序,在构建应用程序时遇到了我无法解决的问题。而且问题也没有正确说明它为什么存在。

我遇到的问题是没有这样的方法错误。这是 main.dart 文件,错误主要在这个文件中。

import 'package:flutter/material.dart';

import './widgets/transaction_list.dart';
import './widgets/new_transaction.dart';
import './widgets/chart.dart';

import './models/transaction.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: "Personal Expenses Tracker",
      home: MyHomePage(),
      theme: ThemeData(
        primarySwatch: Colors.pink,
        fontFamily: 'Quicksand',
      ),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final List<Transaction> _userTransactions = [
    // Transaction(
    //     id: 't1', name: 'Monthly Rent', amount: 500, date: DateTime.now()),
    // Transaction(
    //     id: 't2', name: 'Maid\'s salary', amount: 100, date: DateTime.now()),
  ];

  List<Transaction> get _recentTrasactions {
    return _userTransactions.where((tx) {
      return tx.date.isAfter(
        DateTime.now().subtract(
          Duration(days: 7),
        ),
      );
    }).toList();
  }

  void _addNewTransaction(String txTitle, double txAmount) {
    final newTx = Transaction(
        id: DateTime.now().toString(),
        name: txTitle,
        amount: txAmount,
        date: DateTime.now());

    setState(() {
      _userTransactions.add(newTx);
    });
  }

  void _startAddNewTransaction(BuildContext ctx) {
    showModalBottomSheet(
        context: ctx,
        builder: (_) {
          return GestureDetector(
            child: NewTransaction(_addNewTransaction),
            onTap: () {},
            behavior: HitTestBehavior.opaque,
          );
        });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Personal Expense Tracker'),
        actions: [
          IconButton(
              onPressed: () {
                _startAddNewTransaction(context);
              },
              icon: Icon(Icons.add)),
        ],
      ),
      body: SingleChildScrollView(
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: [
            Chart(this._recentTrasactions),
            TransactionList(_userTransactions),
          ],
        ),
      ),
      floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat,
      floatingActionButton: FloatingActionButton(
        child: Icon(Icons.add),
        onPressed: () {
          _startAddNewTransaction(context);
        },
      ),
    );
  }
}

抛出以下错误页面

Performing hot restart...                                               
Restarted application in 972ms.
I/flutter (12542): [{day: Fri, amount: null}, {day: Thu, amount: null}, {day: Wed, amount: null}, {day: Tue, amount: null}, {day: Mon, amount: null}, {day: Sun, amount: null}, {day: Sat, amount: null}]
W/IInputConnectionWrapper(12542): getSelectedText on inactive InputConnection
W/IInputConnectionWrapper(12542): getTextAfterCursor on inactive InputConnection
W/IInputConnectionWrapper(12542): beginBatchEdit on inactive InputConnection
W/IInputConnectionWrapper(12542): endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper(12542): setComposingRegion on inactive InputConnection

══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
The following NoSuchMethodError was thrown building Chart(dirty):
The method '+' was called on null.
Receiver: null
Tried calling: +(25.0)

The relevant error-causing widget was:
  Chart file:///D:/Flutter%20Repos/personal_expenses_tracker/lib/main.dart:91:13

When the exception was thrown, this was the stack:
#0      Object.noSuchMethod (dart:core-patch/object_patch.dart:54:5)
#1      Chart.groupedTransactions.<anonymous closure> (package:personal_expenses_tracker/widgets/chart.dart:21:20)
#2      new _GrowableList.generate (dart:core-patch/growable_array.dart:133:28)
#3      Chart.groupedTransactions (package:personal_expenses_tracker/widgets/chart.dart:12:17)
#4      Chart.build (package:personal_expenses_tracker/widgets/chart.dart:34:11)
#5      StatelessElement.build (package:flutter/src/widgets/framework.dart:4648:28)
#6      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4574:15)
#7      Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#8      StatelessElement.update (package:flutter/src/widgets/framework.dart:4655:5)
#9      Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#10     RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5596:32)
#11     MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6243:17)
#12     Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#13     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6090:14)
#14     Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#15     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6090:14)
#16     Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#17     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6090:14)
#18     Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#19     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6090:14)
#20     Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#21     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6090:14)
#22     Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#23     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#24     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4746:11)
#25     Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#26     StatefulElement.update (package:flutter/src/widgets/framework.dart:4778:5)
#27     Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#28     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6090:14)
#29     Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#30     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#31     Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#32     ProxyElement.update (package:flutter/src/widgets/framework.dart:4922:5)
#33     Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#34     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6090:14)
#35     Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#36     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6090:14)
#37     Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#38     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6090:14)
#39     Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#40     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6090:14)
#41     Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#42     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#43     Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#44     StatelessElement.update (package:flutter/src/widgets/framework.dart:4655:5)
#45     Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#46     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#47     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4746:11)
#48     Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#49     StatefulElement.update (package:flutter/src/widgets/framework.dart:4778:5)
#50     Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#51     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#52     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4746:11)
#53     Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#54     StatefulElement.update (package:flutter/src/widgets/framework.dart:4778:5)
#55     Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#56     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#57     Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#58     ProxyElement.update (package:flutter/src/widgets/framework.dart:4922:5)
#59     Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#60     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#61     Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#62     StatelessElement.update (package:flutter/src/widgets/framework.dart:4655:5)
#63     Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#64     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#65     Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#66     StatelessElement.update (package:flutter/src/widgets/framework.dart:4655:5)
#67     Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#68     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#69     Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#70     ProxyElement.update (package:flutter/src/widgets/framework.dart:4922:5)
#71     Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#72     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#73     Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#74     ProxyElement.update (package:flutter/src/widgets/framework.dart:4922:5)
#75     Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#76     RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5596:32)
#77     MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6243:17)
#78     Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#79     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#80     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4746:11)
#81     Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#82     StatefulElement.update (package:flutter/src/widgets/framework.dart:4778:5)
#83     Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#84     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#85     Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#86     ProxyElement.update (package:flutter/src/widgets/framework.dart:4922:5)
#87     Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#88     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#89     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4746:11)
#90     Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#91     StatefulElement.update (package:flutter/src/widgets/framework.dart:4778:5)
#92     Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#93     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6090:14)
#94     Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#95     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#96     Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#97     StatelessElement.update (package:flutter/src/widgets/framework.dart:4655:5)
#98     Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#99     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6090:14)
#100    Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#101    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#102    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4746:11)
#103    Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#104    StatefulElement.update (package:flutter/src/widgets/framework.dart:4778:5)
#105    Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#106    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#107    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4746:11)
#108    Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#109    StatefulElement.update (package:flutter/src/widgets/framework.dart:4778:5)
#110    Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#111    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#112    Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#113    ProxyElement.update (package:flutter/src/widgets/framework.dart:4922:5)
#114    Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#115    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#116    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4746:11)
#117    Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#118    StatefulElement.update (package:flutter/src/widgets/framework.dart:4778:5)
#119    Element.updateChild (package:flutter/src/widgets/framework.dart:3350:15)
#120    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)
#121    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4746:11)
#122    Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5)
#123    BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2582:33)
#124    WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:875:21)
#125    RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:328:5)
#126    SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
#127    SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1082:9)
#128    SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:998:5)
#132    _invoke (dart:ui/hooks.dart:163:10)
#133    PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:259:5)
#134    _drawFrame (dart:ui/hooks.dart:126:31)
(elided 3 frames from dart:async)

════════════════════════════════════════════════════════════════════════════════════════════════════

标签: androidflutterdart

解决方案


您正在尝试用一个空变量求和,我相信您已经知道这一点,但我会尽力帮助您。我可以看到,在出现错误之前,您正在使用amount: null. 这可能会导致错误,尽量不要使用,在求和之前null创建一个简单的检查或使用而不是。if0null

{day: Fri, amount: null}     <--- null

Tried calling: +(25.0)       <--- error

推荐阅读