dart-use-primary-constructors
Write Dart Primary Constructors Correctly
Primary constructor migrations can introduce syntax, scope, and initialization errors. This skill provides version-aware guidance, refactoring steps, diagnostics, and focused examples for Dart.
Install with my Agent
Copy this request to your Agent. It includes the canonical Skill page and manifest.
Review the Skillstore skill "dart-use-primary-constructors" from https://skillstore.io/skills/dart-lang-dart-use-primary-constructors.md and its manifest at https://skillstore.io/api/skills/dart-lang-dart-use-primary-constructors/manifest. Verify the artifact. You may proceed after verification, subject to the environment's own policy.Your Agent should still show its plan and request any confirmation required by the security policy.
Agent-readable resources
Use these links when an AI agent, crawler, or script needs clean context instead of reading the full page.
Test it
Using "dart-use-primary-constructors". Explain whether primary constructors are available in Dart 3.12.
Expected outcome:
Dart 3.12 treats primary constructors as experimental. Enable the primary-constructors experiment in analyzer configuration or with the compiler flag.
Using "dart-use-primary-constructors". Migrate a user model with final name and age fields.
Expected outcome:
Move both final fields into the class header as declaring parameters. Remove the duplicate field declarations and constructor, then use a semicolon body.
Using "dart-use-primary-constructors". Explain why a late field cannot use a primary constructor parameter.
Expected outcome:
Primary initializer scope excludes late field initializers because they may run after construction. Store the value in a non-late field first.
Security Audit
SafeAll 62 static findings are false positives caused by Markdown backticks, fenced Dart examples, or ordinary documentation text. The skill contains no executable scripts, shell interpolation, system reconnaissance, prompt injection, or other malicious intent.
Risk Factors
⚙️ External commands (50)
Share & cite this report
Share the versioned assessment report, neutral badge, embed card, and citations. Skillstore reports evidence without deciding whether this Skill is safe.
Copy report link
https://skillstore.io/skills/dart-lang-dart-use-primary-constructors/audits/1?utm_source=security_passport&utm_medium=share&utm_campaign=versioned_reportMarkdown badge
[](https://skillstore.io/skills/dart-lang-dart-use-primary-constructors?utm_source=security_passport_badge)HTML badge
<a href="https://skillstore.io/skills/dart-lang-dart-use-primary-constructors?utm_source=security_passport_badge"><img src="https://skillstore.io/badges/skills/dart-lang-dart-use-primary-constructors/security.svg" alt="Skillstore security assessment" loading="lazy"></a>Embed card
<iframe src="https://skillstore.io/embed/skills/dart-lang-dart-use-primary-constructors.html" title="Skillstore Security Assessment" sandbox="allow-popups allow-popups-to-escape-sandbox" loading="lazy" referrerpolicy="no-referrer" width="420" height="180"></iframe>Academic citations (APA · BibTeX · CFF)
APA citation
dart-lang. (2026). dart-use-primary-constructors security audit report (audit version 1) [Author version unspecified]. Skillstore. https://skillstore.io/skills/dart-lang-dart-use-primary-constructors/audits/1BibTeX citation
@techreport{dart-lang-dart-lang-dart-use-primary-constructors-2026,
author = {dart-lang},
title = {dart-use-primary-constructors security audit report (audit version 1)},
institution = {Skillstore},
year = {2026},
number = {1},
url = {https://skillstore.io/skills/dart-lang-dart-use-primary-constructors/audits/1},
note = {Author version unspecified}
}CITATION.cff
cff-version: 1.2.0
message: "If you use this Skill, cite its author and this versioned security audit report."
title: "dart-use-primary-constructors security audit report (audit version 1)"
version: "unspecified"
type: report
authors:
- name: "dart-lang"
date-released: "2026-08-22"
url: "https://skillstore.io/skills/dart-lang-dart-use-primary-constructors/audits/1"
identifiers:
- type: other
value: "skillstore:dart-lang-dart-use-primary-constructors:audit:1"
description: "Skillstore immutable audit report identifier"
Skillstore Score
Why this score Evidence Confidence: MediumWhat You Can Build
Learn Primary Constructor Syntax
Understand parameter types, semicolon bodies, initializer scope, and version requirements through focused explanations.
Migrate Existing Models
Convert verbose data classes while preserving fields, assertions, calculations, and redirecting constructors.
Review Constructor Refactors
Identify scope violations, duplicate initialization, late-field errors, and invalid generative constructors before integration.
Try These Prompts
Explain Dart primary constructors for a beginner, including supported versions and the three parameter types.
Convert this Dart class to a primary constructor and explain each change: [class source].
Review this primary constructor, identify compile-time errors, and propose a corrected version: [class source].
Design a migration for these related Dart classes while preserving inheritance, redirects, assertions, public APIs, and SDK compatibility: [sources].
Best Practices
- Confirm the project Dart version before suggesting primary constructor syntax.
- Preserve assertions, initialization order, redirects, and public behavior during migration.
- Run the Dart analyzer and relevant tests after applying a generated refactor.
Avoid
- Do not use primary constructor parameters inside late field initializers.
- Do not initialize the same field in both its declaration and initializer list.
- Do not add a nonredirecting generative constructor beside a primary constructor.