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< multiSelections = const {}})String> > -
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