Dart 刷新指示器上的NOSUCH方法

Dart 刷新指示器上的NOSUCH方法,dart,flutter,Dart,Flutter,我有一个使用RefreshIndicator的布局。它的子对象是CustomScrollView。然而,当调用onRefresh处理程序时,它会抛出一个异常 [ERROR:../../lib/tonic/logging/dart_error.cc(16)] Unhandled exception: E/flutter (21060): NoSuchMethodError: The method 'call' was called on null. E/flutter (21060): Recei

我有一个使用RefreshIndicator的布局。它的子对象是CustomScrollView。然而,当调用onRefresh处理程序时,它会抛出一个异常

[ERROR:../../lib/tonic/logging/dart_error.cc(16)] Unhandled exception:
E/flutter (21060): NoSuchMethodError: The method 'call' was called on null.
E/flutter (21060): Receiver: null
E/flutter (21060): Tried calling: call()

E/flutter (21060): #0      Object._noSuchMethod (dart:core-patch/object_patch.dart:43)
E/flutter (21060): #1      Object.noSuchMethod (dart:core-patch/object_patch.dart:47)
E/flutter (21060): #2      new Future.sync (dart:async/future.dart:222)
E/flutter (21060): #3      MyHomePageState.handleRefresh (file:///home/swav/Git/flutter/status-app/lib/state/state.dart:49)
E/flutter (21060): #4      RefreshIndicatorState._show.<anonymous closure> (package:flutter/src/material/refresh_indicator.dart:319)
E/flutter (21060): #5      _RootZone.runUnary (dart:async/zone.dart:1371)
E/flutter (21060): #6      _FutureListener.handleValue (dart:async/future_impl.dart:129)
E/flutter (21060): #7      _Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:636)
E/flutter (21060): #8      _Future._propagateToListeners (dart:async/future_impl.dart:665)
E/flutter (21060): #9      _Future._completeWithValue (dart:async/future_impl.dart:478)
E/flutter (21060): #10     _Future._asyncComplete.<anonymous closure> (dart:async/future_impl.dart:510)
E/flutter (21060): #11     _microtaskLoop (dart:async/schedule_microtask.dart:41)
E/flutter (21060): #12     _startMicrotaskLoop (dart:async/schedule_microtask.dart:50)
[错误:../../lib/tonic/logging/dart\u ERROR.cc(16)]未处理的异常:
E/flatter(21060):NoSuchMethodError:方法“call”在null上被调用。
E/颤振(21060):接收器:空
E/flatter(21060):尝试呼叫:call()
E/颤振(21060):#0对象。_-nosuch方法(省道:核心补片/对象补片。省道:43)
E/颤振(21060):#1个对象。无此方法(省道:核心补片/对象补片。省道:47)
E/flatter(21060):#2 new Future.sync(dart:async/Future.dart:222)
E/颤振(21060):#3 MyHomePageState.handleRefresh(file:///home/swav/Git/flutter/status-app/lib/state/state.dart:49)
E/颤振(21060):#4个刷新指示器状态。"。(包装:颤振/src/材料/刷新指示器。dart:319)
E/flatter(21060):#5_RootZone.runUnary(dart:async/zone.dart:1371)
E/flatter(21060):#6 FutureListener.handleValue(dart:async/future_impl.dart:129)
E/flatter(21060):#7_Future._propagateToListeners.handleValueCallback(dart:async/Future_impl.dart:636)
E/flatter(21060):#8_Future._传播到侦听器(dart:async/Future_impl.dart:665)
E/flatter(21060):#9 _Future._completewith value(dart:async/Future_impl.dart:478)
E/颤振(21060):#10#未来。#。(dart:async/future\u impl.dart:510)
E/flatter(21060):#11 microtaskLoop(dart:async/schedule_microtask.dart:41)
E/flatter(21060):#12 startMicrotaskLoop(dart:async/schedule_microtask.dart:50)
有趣的是onRefresh成功完成


当RefreshIndicator的直接子对象是Flex时,它也没有抱怨。

调试您的问题很困难,因为您没有提供代码,但是从堆栈跟踪中,我可以看到在state.dart的第49行的
handleRefresh
方法中,您正在调用
new Future.sync(null)
,它正在尝试将
null
作为函数调用

当您需要一个具有值
null
的完整
Future
时,请尝试使用
newfuture.value(null)
。但是,当返回的未来立即完成时,
RefreshIndicator
不会起多大作用。您可能想看看这篇文章,了解如何使用
RefreshIndicator


当孩子是
Flex
时,它可能不会抱怨,因为
Flex
不会滚动。

你能给我们看一下代码吗?