Blueprint class

A project blueprint containing deterministic creation details.

Binds: FR-021–FR-026, INV-B1/B2/B3 (schema 1) and FR-022–FR-027, INV-B4–B7 (schema 2, contracts/blueprint-schema-v2.md).

Schema 2 replaces the flat fixed-stack fields (recipeId, recipeVersion, integrations) with structured singleSelections/multiSelections. Both shapes live on one class — not a distinct BlueprintV2 type — so every consumer (compatibility, resolution, plan) forks on nothing but schemaVersion. The v1-only fields stay required-free (defaulted) purely so v2 construction sites don't need to supply them; every existing v1 call site is unaffected. toJson/fromJson are schema-dispatched: a schema-1 Blueprint round-trips through the unchanged v1 shape (existing callers — including the doctor toolchain probe, which relies on recipeId/engineVersion equality checks — see zero behavior change); a schema-2 Blueprint serializes to exactly the v2 contract shape, with no v1 fields in the output (B-4). The schema_version: 1 → 2 auto-upgrade migration rule (FR-048–FR-050) is separate from this raw parse — it lives where the CLI reads external input (T054), not here, so this factory's existing round-trip behavior for schema 1 remains exact.

Constructors

Blueprint({required int schemaVersion, required String projectName, String description = '', required String organization, required String destination, required String flutterSdkRequirement, required Set<String> targetPlatforms, String recipeId = '', String recipeVersion = '', String engineVersion = '', Set<String> integrations = const {}, required ValidationProfile validationProfile, required bool gitPreference, Map<String, dynamic> toolchainPolicy = const {}, SetupMode? setupMode, Map<String, String> singleSelections = const {}, Map<String, List<String>> multiSelections = const {}})
Blueprint.fromJson(Map<String, dynamic> json)
factory

Properties

blueprintHash String
Computes the blueprint hash canonically (INV-B1).
no setter
description String
final
destination String
final
engineVersion String
final
flutterSdkRequirement String
final
gitPreference bool
final
hashCode int
The hash code for this object.
no setterinherited
integrations Set<String>
final
multiSelections Map<String, List<String>>
An ordered, de-duplicated option list per multi-select capability (schema 2 only; INV-B5). A Skipped section is absent (INV-B6).
final
organization String
final
projectName String
final
recipeId String
final
recipeVersion String
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
schemaVersion int
final
setupMode SetupMode?
Provenance of the starting selections (schema 2 only) — records how the Blueprint was seeded, not the schema or lifecycle (data-model.md §3).
final
singleSelections Map<String, String>
One option per single-select capability (schema 2 only; INV-B4).
final
targetPlatforms Set<String>
final
toolchainPolicy Map<String, dynamic>
final
validationProfile ValidationProfile
final

Methods

noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toJson() Map<String, dynamic>
toString() String
A string representation of this object.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited