2017-06-15 47 views
0

我有一个使用RefreshIndicator的布局。它的孩子是CustomScrollView。然而,当onRefresh处理程序被调用,它抛出一个异常刷新指示NoSuchMethod

[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) 

有趣的是,onRefresh成功完成。

此外,当RefreshIndicator的直系孩子是Flex时,它并不抱怨。

+0

你能告诉我们代码吗? –

回答

1

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

尝试使用new Future.value(null)而不是当您需要完成Future与价值null。但当返回的Future未立即完成时,RefreshIndicator没有太大的作用。你可能想看看这个example灵感如何使用RefreshIndicator

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