ProjectSnapshot.fromProject constructor

ProjectSnapshot.fromProject(
  1. FFProject project
)

Implementation

factory ProjectSnapshot.fromProject(FFProject project) {
  final appState = [
    for (final field in _sortedByName(
      listAppStateFields(project),
      (field) => field.parameter.identifier.name,
    ))
      FieldSnapshot(
        name: field.parameter.identifier.name,
        key: field.parameter.identifier.key,
        type: formatDataType(field.parameter.dataType),
        defaultValue:
            field.serializedDefaultValue.isEmpty
                ? null
                : field.serializedDefaultValue.join(', '),
        description:
            field.parameter.description.isEmpty
                ? null
                : field.parameter.description,
        persisted: field.persisted,
      ),
  ];

  final pages = [
    for (final pageInfo in _sortedByName(
      listPages(project),
      (page) => page.name,
    ))
      if (project_helpers.findPage(project, name: pageInfo.name)
          case final widgetClass?)
        PageSnapshot._fromWidgetClass(
          project,
          widgetClass,
          route: pageInfo.route,
        ),
  ];

  final components = [
    for (final componentInfo in _sortedByName(
      listComponents(project),
      (component) => component.name,
    ))
      if (project_helpers.findComponent(project, name: componentInfo.name)
          case final widgetClass?)
        ComponentSnapshot._fromWidgetClass(project, widgetClass),
  ];

  return ProjectSnapshot._(
    name: project.name,
    appState: appState,
    pages: pages,
    components: components,
  );
}