首页 > 解决方案 > Flutter:NoSuchMethodError 仅在 Android 上

问题描述

我正在尝试修复这个相当烦人的错误。我的应用程序有一个带有数据的 sliverList(从 json 网络资源中获取)。直到几天前,我都能够在 ios 和 android 中运行它。

现在我收到以下错误消息:

NoSuchMethodError: The getter 'length' was called on null. 
Receiver: null
Tried calling: length

完整的错误信息在最后。

根据错误消息导航到相关文件的第 49 行时,我有以下代码:

new ZoopediaPage(widget.res),

在传递了 widget.res (已经从启动屏幕传递)之后。

本身在.length这里使用:

@override
Widget build(BuildContext context) {
  List response = widget.res;
  int rnd = randomGen(0, widget.res.length);

在 ZoopediaPage 我有以下代码:

class ZoopediaPage extends StatefulWidget {
  List res;
  ZoopediaPage(this.res);
  //const ZoopediaPage({Key key}) : super(key: key);

  @override
  _ZoopediaPageState createState() => _ZoopediaPageState();
}

使用时,print(widget.res)我在控制台中有结果。

我的猜测是,由于某种原因,我的 android 设备在加载数据时出现了一些问题,但我不知道为什么它突然出现问题,为什么只在 android 上出现问题?

Future fetchData() async {
  http.Response response;
  response =
      await http.get('https://apps.lechner.io/zoopedia/zoopedia_animals.json');

  if (response.statusCode == 200) {
    setState(() {
      res = json.decode(response.body);
      print('(DEBUG) Data Loaded successfully');
    });
  }
}

在android上也设置了互联网权限。

 <uses-permission android:name="android.permission.INTERNET" />

此处包含完整的错误消息:

Performing hot reload...                                               ⣻
Another exception was thrown: NoSuchMethodError: The getter 'length' was called
on null.
        
Reloaded 1 of 619 libraries in 214ms.

Performing hot reload...                                               ⣻
══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY
╞═══════════════════════════════════════════════════════════
The following NoSuchMethodError was thrown building ZoopediaPage(dirty, state:
_ZoopediaPageState#8c021):
The getter 'length' was called on null.
Receiver: null
Tried calling: length

The relevant error-causing widget was:
ZoopediaPage
file:///Users/lechnerio/dev/flutter/zoopedia/app/lib/ZoopediaApp.dart:49:15

When the exception was thrown, this was the stack:
#0      Object.noSuchMethod (dart:core-patch/object_patch.dart:54:5)
#1      _ZoopediaPageState.build (package:zoopedia/pages/zoopedia.dart:38:39)
#2      StatefulElement.build
(package:flutter/src/widgets/framework.dart:4742:27)
#3      ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4625:15)
#4      StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4797:11)
#5      Element.rebuild (package:flutter/src/widgets/framework.dart:4319:5)
#6      StatefulElement.update
(package:flutter/src/widgets/framework.dart:4829:5)
#7      Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#8      SingleChildRenderObjectElement.update
(package:flutter/src/widgets/framework.dart:6111:14)
#9      Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#10     SingleChildRenderObjectElement.update
(package:flutter/src/widgets/framework.dart:6111:14)
#11     Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#12     ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4650:16)
#13     Element.rebuild (package:flutter/src/widgets/framework.dart:4319:5)
#14     StatelessElement.update
(package:flutter/src/widgets/framework.dart:4706:5)
#15     Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#16     ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4650:16)
#17     Element.rebuild (package:flutter/src/widgets/framework.dart:4319:5)
#18     ProxyElement.update (package:flutter/src/widgets/framework.dart:4973:5)
#19     Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#20     ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4650:16)
#21     StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4797:11)
#22     Element.rebuild (package:flutter/src/widgets/framework.dart:4319:5)
#23     StatefulElement.update
(package:flutter/src/widgets/framework.dart:4829:5)
#24     Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#25     ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4650:16)
#26     Element.rebuild (package:flutter/src/widgets/framework.dart:4319:5)
#27     StatelessElement.update
(package:flutter/src/widgets/framework.dart:4706:5)
#28     Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#29     SliverMultiBoxAdaptorElement.updateChild
(package:flutter/src/widgets/sliver.dart:1229:37)
#30     SliverMultiBoxAdaptorElement.performRebuild.processElement
(package:flutter/src/widgets/sliver.dart:1145:35)
#31     Iterable.forEach (dart:core/iterable.dart:283:30)
#32     SliverMultiBoxAdaptorElement.performRebuild
(package:flutter/src/widgets/sliver.dart:1187:24)
#33     SliverMultiBoxAdaptorElement.update
(package:flutter/src/widgets/sliver.dart:1124:7)
#34     Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#35     SingleChildRenderObjectElement.update
(package:flutter/src/widgets/framework.dart:6111:14)
#36     Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#37     ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4650:16)
#38     Element.rebuild (package:flutter/src/widgets/framework.dart:4319:5)
#39     StatelessElement.update
(package:flutter/src/widgets/framework.dart:4706:5)
#40     Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#41     RenderObjectElement.updateChildren
(package:flutter/src/widgets/framework.dart:5633:32)
#42     MultiChildRenderObjectElement.update
(package:flutter/src/widgets/framework.dart:6235:17)
#43     _ViewportElement.update
(package:flutter/src/widgets/viewport.dart:228:11)
#44     Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#45     SingleChildRenderObjectElement.update
(package:flutter/src/widgets/framework.dart:6111:14)
#46     Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#47     SingleChildRenderObjectElement.update
(package:flutter/src/widgets/framework.dart:6111:14)
#48     Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#49     SingleChildRenderObjectElement.update
(package:flutter/src/widgets/framework.dart:6111:14)
#50     Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#51     SingleChildRenderObjectElement.update
(package:flutter/src/widgets/framework.dart:6111:14)
#52     Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#53     ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4650:16)
#54     StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4797:11)
#55     Element.rebuild (package:flutter/src/widgets/framework.dart:4319:5)
#56     StatefulElement.update
(package:flutter/src/widgets/framework.dart:4829:5)
#57     Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#58     SingleChildRenderObjectElement.update
(package:flutter/src/widgets/framework.dart:6111:14)
#59     Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#60     ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4650:16)
#61     Element.rebuild (package:flutter/src/widgets/framework.dart:4319:5)
#62     ProxyElement.update (package:flutter/src/widgets/framework.dart:4973:5)
#63     Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#64     SingleChildRenderObjectElement.update
(package:flutter/src/widgets/framework.dart:6111:14)
#65     Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#66     SingleChildRenderObjectElement.update
(package:flutter/src/widgets/framework.dart:6111:14)
#67     Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#68     SingleChildRenderObjectElement.update
(package:flutter/src/widgets/framework.dart:6111:14)
#69     Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#70     SingleChildRenderObjectElement.update
(package:flutter/src/widgets/framework.dart:6111:14)
#71     Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#72     ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4650:16)
#73     Element.rebuild (package:flutter/src/widgets/framework.dart:4319:5)
#74     StatelessElement.update
(package:flutter/src/widgets/framework.dart:4706:5)
#75     Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#76     ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4650:16)
#77     StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4797:11)
#78     Element.rebuild (package:flutter/src/widgets/framework.dart:4319:5)
#79     StatefulElement.update
(package:flutter/src/widgets/framework.dart:4829:5)
#80     Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#81     ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4650:16)
#82     StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4797:11)
#83     Element.rebuild (package:flutter/src/widgets/framework.dart:4319:5)
#84     StatefulElement.update
(package:flutter/src/widgets/framework.dart:4829:5)
#85     Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#86     ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4650:16)
#87     Element.rebuild (package:flutter/src/widgets/framework.dart:4319:5)
#88     StatelessElement.update
(package:flutter/src/widgets/framework.dart:4706:5)
#89     Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#90     ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4650:16)
#91     StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4797:11)
#92     Element.rebuild (package:flutter/src/widgets/framework.dart:4319:5)
#93     StatefulElement.update
(package:flutter/src/widgets/framework.dart:4829:5)
#94     Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#95     ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4650:16)
#96     Element.rebuild (package:flutter/src/widgets/framework.dart:4319:5)
#97     StatelessElement.update
(package:flutter/src/widgets/framework.dart:4706:5)
#98     Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#99     ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4650:16)
#100    Element.rebuild (package:flutter/src/widgets/framework.dart:4319:5)
#101    ProxyElement.update (package:flutter/src/widgets/framework.dart:4973:5)
#102    Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#103    ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4650:16)
#104    Element.rebuild (package:flutter/src/widgets/framework.dart:4319:5)
#105    ProxyElement.update (package:flutter/src/widgets/framework.dart:4973:5)
#106    Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#107    RenderObjectElement.updateChildren
(package:flutter/src/widgets/framework.dart:5633:32)
#108    MultiChildRenderObjectElement.update
(package:flutter/src/widgets/framework.dart:6235:17)
#109    Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#110    ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4650:16)
#111    StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4797:11)
#112    Element.rebuild (package:flutter/src/widgets/framework.dart:4319:5)
#113    StatefulElement.update
(package:flutter/src/widgets/framework.dart:4829:5)
#114    Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#115    ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4650:16)
#116    Element.rebuild (package:flutter/src/widgets/framework.dart:4319:5)
#117    ProxyElement.update (package:flutter/src/widgets/framework.dart:4973:5)
#118    Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#119    ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4650:16)
#120    StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4797:11)
#121    Element.rebuild (package:flutter/src/widgets/framework.dart:4319:5)
#122    StatefulElement.update
(package:flutter/src/widgets/framework.dart:4829:5)
#123    Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#124    SingleChildRenderObjectElement.update
(package:flutter/src/widgets/framework.dart:6111:14)
#125    Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#126    ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4650:16)
#127    Element.rebuild (package:flutter/src/widgets/framework.dart:4319:5)
#128    StatelessElement.update
(package:flutter/src/widgets/framework.dart:4706:5)
#129    Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#130    SingleChildRenderObjectElement.update
(package:flutter/src/widgets/framework.dart:6111:14)
#131    Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#132    ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4650:16)
#133    StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4797:11)
#134    Element.rebuild (package:flutter/src/widgets/framework.dart:4319:5)
#135    StatefulElement.update
(package:flutter/src/widgets/framework.dart:4829:5)
#136    Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#137    ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4650:16)
#138    StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4797:11)
#139    Element.rebuild (package:flutter/src/widgets/framework.dart:4319:5)
#140    StatefulElement.update
(package:flutter/src/widgets/framework.dart:4829:5)
#141    Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#142    ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4650:16)
#143    Element.rebuild (package:flutter/src/widgets/framework.dart:4319:5)
#144    ProxyElement.update (package:flutter/src/widgets/framework.dart:4973:5)
#145    Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#146    ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4650:16)
#147    StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4797:11)
#148    Element.rebuild (package:flutter/src/widgets/framework.dart:4319:5)
#149    StatefulElement.update
(package:flutter/src/widgets/framework.dart:4829:5)
#150    Element.updateChild (package:flutter/src/widgets/framework.dart:3293:15)
#151    ComponentElement.performRebuild
(package:flutter/src/widgets/framework.dart:4650:16)
#152    StatefulElement.performRebuild
(package:flutter/src/widgets/framework.dart:4797:11)
#153    Element.rebuild (package:flutter/src/widgets/framework.dart:4319:5)
#154    BuildOwner.buildScope
(package:flutter/src/widgets/framework.dart:2694:33)
#155    WidgetsBinding.drawFrame
(package:flutter/src/widgets/binding.dart:869:21)
#156    RendererBinding._handlePersistentFrameCallback
(package:flutter/src/rendering/binding.dart:319:5)
#157    SchedulerBinding._invokeFrameCallback
(package:flutter/src/scheduler/binding.dart:1144:15)
#158    SchedulerBinding.handleDrawFrame
(package:flutter/src/scheduler/binding.dart:1082:9)
#159    SchedulerBinding.scheduleWarmUpFrame.<anonymous closure>
(package:flutter/src/scheduler/binding.dart:865:7)
(elided 4 frames from class _RawReceivePortImpl, class _Timer, and
dart:async-patch)

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

标签: flutter

解决方案


该问题不是由任何代码引起的。

由于某种原因,android 模拟器没有互联网,我无法连接到它。

设置权限<uses-permission android:name="android.permission.INTERNET" />没有帮助。

我创建了一个新的 android 设备,它开箱即用。


推荐阅读