createFundamentalTheme method

Implementation

AFFundamentalThemeState createFundamentalTheme(AFFundamentalDeviceTheme device, AFComponentStates areas, Iterable<AFCoreLibraryExtensionContext> libraries) {
  final builder = AFAppFundamentalThemeAreaBuilder.create();
  final initThemeArea = this.defineAppFundamentalTheme;
  if(initThemeArea != null) {
    initThemeArea(device, areas, builder);
  }

  for(final init in this.defineFundamentalLibraryThemes) {
    init(device, areas, builder);
  }

  if(AFibD.config.requiresPrototypeData) {
    initPrototypeThemeArea(device, areas, builder);
  }

  for(final library in libraries) {
    final inits = library.defineFundamentalLibraryThemes;
    for(final init in inits) {
      init(device, areas, builder);
    }
  }

  final primaryArea = builder.create();
  final marginSpacing = builder.createMarginSpacing();
  final paddingSpacing = builder.createPaddingSpacing();
  final borderRadius = builder.createBorderRadius();

  builder.setTranslations(AFUILocaleID.universal, {
    AFUITranslationID.appTitle: "App Title",
    AFUITranslationID.widgetPrototypes: "Widget Prototypes",
    AFUITranslationID.screenPrototypes: "UI Prototypes",
    AFUITranslationID.workflowTests: "Workflow Tests",
    AFUITranslationID.stateTests: "State Tests",
    AFUITranslationID.libraries: "Libraries",
    AFUITranslationID.searchResults: "Search Results",
    AFUITranslationID.testResults: "Test Results",
    AFUITranslationID.run: "Run {0}",
    AFUITranslationID.prototype: "Prototype",
    AFUITranslationID.release: "Release",
    AFUITranslationID.recent: "Recent",
    AFUITranslationID.favorites: "Favorites",
    AFUITranslationID.afibPrototypeMode: "${AFibD.config.appNamespace.toUpperCase()} Prototype Mode",
    AFUITranslationID.afibPrototypeLoading: "",
    AFUITranslationID.wireframes: "Wireframes",
    AFUITranslationID.afibUnimplemented: "Unimplemented",
  });

  final result = AFFundamentalThemeState(
    device: device,
    area: primaryArea,
    marginSpacing: marginSpacing,
    paddingSpacing: paddingSpacing,
    borderRadius: borderRadius,
    themeData: null,
  );
  result.resolve();
  return result;
}