2017-06-15 3 views
0

Ich habe ein Layout, das RefreshIndicator verwendet. Es ist Kind ist CustomScrollView. Allerdings, wenn OnRefresh Handler aufgerufen wird es löst eine AusnahmeNoSuchMethod auf RefreshIndicator

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

Interessante daran ist, dass OnRefresh erfolgreich abgeschlossen wurde.

Auch wenn das sofortige Kind von RefreshIndicator ein Flex war, hat es sich nicht beschwert.

+0

Können Sie uns den Code zeigen? –

Antwort

1

Es ist schwierig, Ihr Problem zu debuggen, weil Sie Ihren Code nicht zur Verfügung gestellt haben, aber von der Stack-Trace kann ich sehen, dass in Ihrer handleRefresh Methode in Zeile 49 von state.dart Sie new Future.sync(null) aufrufen, die versucht Rufen Sie null als eine Funktion auf.

Verwenden Sie stattdessen new Future.value(null), wenn Sie eine vollständige Future mit Wert null benötigen. Aber RefreshIndicator tut nicht viel, wenn der zurückgegebene Future sofort abgeschlossen wird. Sie können diese example als Inspiration für die Verwendung von RefreshIndicator betrachten.

Es war wahrscheinlich nicht beschweren, wenn das Kind ein Flex war, weil ein Flex nicht scrollt.

Verwandte Themen