handleContexts method

  1. @override
SliverObserverHandleContextsResultModel<ObserveModel>? handleContexts({
  1. bool isForceObserve = false,
  2. bool isFromObserveNotification = false,
  3. bool isDependObserveCallback = true,
  4. bool isIgnoreInnerCanHandleObserve = true,
})

Handle all buildContext

Implementation

@override
SliverObserverHandleContextsResultModel<ObserveModel>? handleContexts({
  bool isForceObserve = false,
  bool isFromObserveNotification = false,
  bool isDependObserveCallback = true,
  bool isIgnoreInnerCanHandleObserve = true,
}) {
  if (!isIgnoreInnerCanHandleObserve) {
    if (!innerCanHandleObserve) return null;
    updateInnerCanHandleObserve();
  }

  // Viewport
  final observeViewportResult = handleObserveViewport(
    isForceObserve: isForceObserve,
    isDependObserveCallback: isDependObserveCallback,
  );

  // Slivers(SliverList, GridView etc.)
  final handleContextsResult = super.handleContexts(
    isForceObserve: isForceObserve,
    isFromObserveNotification: isFromObserveNotification,
    isDependObserveCallback: isDependObserveCallback,
    // It has been processed by the currently rewritten handleContexts method
    isIgnoreInnerCanHandleObserve: true,
  );

  if (observeViewportResult == null && handleContextsResult == null) {
    return null;
  }
  return SliverObserverHandleContextsResultModel(
    changeResultModel: handleContextsResult?.changeResultModel,
    changeResultMap: handleContextsResult?.changeResultMap ?? {},
    observeViewportResultModel: observeViewportResult,
  );
}