updateScreenResponse method

void updateScreenResponse(
  1. String screenRoute,
  2. StandardScreenResponseCubit cubit,
  3. ApiResponseCubit apiCubit,
  4. List<StandardPageResponseWidgets> widgets, [
  5. Map<String, dynamic>? dataStore,
])

Implementation

void updateScreenResponse(String screenRoute, StandardScreenResponseCubit cubit,ApiResponseCubit apiCubit,
    List<StandardPageResponseWidgets> widgets,
    [Map<String, dynamic>? dataStore]) {
  final response = cubit.state.responseMap;
  final screenResponse = response[screenRoute];
  if (screenResponse != null) {
    final responseWidgetIds = Map.fromEntries(
      screenResponse.widgets.map((widget) => MapEntry(widget.id, widget)),
    );
    for (final widget in widgets) {
      final existingWidget = responseWidgetIds[widget.id];
      if (existingWidget != null) {
        screenResponse.dataStore![widget.id] = dataStore;
      } else {
        screenResponse.widgets.add(widget);
        screenResponse.dataStore![widget.id] = dataStore;
      }
    }
    cubit.updateStandardScreenResponse(screenRoute, screenResponse,response);
    apiCubit.updatePage();
  } else {
    throw Exception('Screen Reference does not exists!');
  }
}