2017-06-15 65 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不滾動,它可能沒有抱怨。