【问题标题】:NoSuchMethod on RefreshIndicatorRefreshIndicator 上的 NoSuchMethod
【发布时间】:2017-11-17 13:01:17
【问题描述】:

我有一个使用 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)

有趣的是 onRefresh 成功完成。

此外,当 RefreshIndicator 的直接子代是 Flex 时,它不会抱怨。

【问题讨论】:

  • 你能给我们看看代码吗?

标签: dart flutter


【解决方案1】:

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

当您需要一个完整的Futurenull 时,请尝试使用new Future.value(null)。但是当返回的 Future 立即完成时,RefreshIndicator 并没有做太多事情。您可能想看看这个example 以获取有关如何使用RefreshIndicator 的灵感。

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

【讨论】:

    猜你喜欢
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多