In accordance with Flutter's Deprecation Policy, deprecated APIs that reached end of life after the 3.3 stable release have been removed.
- Who is affected
- Any code still referencing the removed API will fail to compile after upgrading. Code that uses RenderUnconstrainedBox, RenderConstraintsTransformBox, ConstraintsTransformBox.unconstrained and related APIs.
- Practical impact
- Compile errors until migrated; must be addressed before upgrading.
- What action should I take?
- Review the linked source, update affected code and run your test suite before upgrading.
APIs mentioned:RenderUnconstrainedBoxRenderConstraintsTransformBoxConstraintsTransformBox.unconstrainedRenderUnconstrainedBox.constrainedAxisAxis.horizontalConstraintsTransformBox.widthUnconstrainedAxis.verticalConstraintsTransformBox.heightUnconstrainedConstraintsTransformBoxDragAnchorDraggable.dragAnchorLongPressDraggable.dragAnchor
Before and after (from the official guide)
dart+6−5
Before
| 1 | // Unconstrained | |
| 2 | − | final RenderUnconstrainedBox unconstrained = RenderUnconstrainedBox( |
| 3 | textDirection: TextDirection.ltr, | |
| 4 | child: RenderConstrainedBox( | |
| 5 | additionalConstraints: const BoxConstraints.tightFor(height: 200.0), | |
| 6 | ), | |
| 7 | alignment: Alignment.center, | |
| 8 | ); | |
| 9 | ||
| 10 | // Constrained in horizontal axis | |
| 11 | − | final RenderUnconstrainedBox unconstrained = RenderUnconstrainedBox( |
| 12 | − | constrainedAxis: Axis.horizontal, |
| 13 | textDirection: TextDirection.ltr, | |
| 14 | child: RenderConstrainedBox( | |
| 15 | additionalConstraints: const BoxConstraints.tightFor(width: 200.0, height: 200.0), | |
| 16 | ), | |
| 17 | alignment: Alignment.center, | |
| 18 | ); | |
| 19 | ||
| 20 | // Constrained in vertical axis | |
| 21 | − | final RenderUnconstrainedBox unconstrained = RenderUnconstrainedBox( |
| 22 | − | constrainedAxis: Axis.vertical, |
| 23 | textDirection: TextDirection.ltr, | |
| 24 | child: RenderFlex( | |
| 25 | direction: Axis.vertical, | |
| 26 | textDirection: TextDirection.ltr, | |
| 27 | children: <RenderBox>[flexible], | |
| 28 | ), | |
| 29 | alignment: Alignment.center, | |
| 30 | ); |
After
| 1 | // Unconstrained | |
| 2 | + | final RenderConstraintsTransformBox unconstrained = RenderConstraintsTransformBox( |
| 3 | + | constraintsTransform: ConstraintsTransformBox.unconstrained, |
| 4 | textDirection: TextDirection.ltr, | |
| 5 | child: RenderConstrainedBox( | |
| 6 | additionalConstraints: const BoxConstraints.tightFor(height: 200.0), | |
| 7 | ), | |
| 8 | alignment: Alignment.center, | |
| 9 | ); | |
| 10 | ||
| 11 | // Constrained in horizontal axis | |
| 12 | + | final RenderConstraintsTransformBox unconstrained = RenderConstraintsTransformBox( |
| 13 | + | constraintsTransform: ConstraintsTransformBox.widthUnconstrained, |
| 14 | textDirection: TextDirection.ltr, | |
| 15 | child: RenderConstrainedBox( | |
| 16 | additionalConstraints: const BoxConstraints.tightFor(width: 200.0, height: 200.0), | |
| 17 | ), | |
| 18 | alignment: Alignment.center, | |
| 19 | ); | |
| 20 | ||
| 21 | // Constrained in vertical axis | |
| 22 | + | final RenderConstraintsTransformBox unconstrained = RenderConstraintsTransformBox( |
| 23 | + | constraintsTransform: ConstraintsTransformBox.widthUnconstrained, |
| 24 | textDirection: TextDirection.ltr, | |
| 25 | child: RenderFlex( | |
| 26 | direction: Axis.vertical, | |
| 27 | textDirection: TextDirection.ltr, | |
| 28 | children: <RenderBox>[flexible], | |
| 29 | ), | |
| 30 | alignment: Alignment.center, | |
| 31 | ); |
Raw before / after
// Unconstrained
final RenderUnconstrainedBox unconstrained = RenderUnconstrainedBox(
textDirection: TextDirection.ltr,
child: RenderConstrainedBox(
additionalConstraints: const BoxConstraints.tightFor(height: 200.0),
),
alignment: Alignment.center,
);
// Constrained in horizontal axis
final RenderUnconstrainedBox unconstrained = RenderUnconstrainedBox(
constrainedAxis: Axis.horizontal,
textDirection: TextDirection.ltr,
child: RenderConstrainedBox(
additionalConstraints: const BoxConstraints.tightFor(width: 200.0, height: 200.0),
),
alignment: Alignment.center,
);
// Constrained in vertical axis
final RenderUnconstrainedBox unconstrained = RenderUnconstrainedBox(
constrainedAxis: Axis.vertical,
textDirection: TextDirection.ltr,
child: RenderFlex(
direction: Axis.vertical,
textDirection: TextDirection.ltr,
children: <RenderBox>[flexible],
),
alignment: Alignment.center,
);// Unconstrained
final RenderConstraintsTransformBox unconstrained = RenderConstraintsTransformBox(
constraintsTransform: ConstraintsTransformBox.unconstrained,
textDirection: TextDirection.ltr,
child: RenderConstrainedBox(
additionalConstraints: const BoxConstraints.tightFor(height: 200.0),
),
alignment: Alignment.center,
);
// Constrained in horizontal axis
final RenderConstraintsTransformBox unconstrained = RenderConstraintsTransformBox(
constraintsTransform: ConstraintsTransformBox.widthUnconstrained,
textDirection: TextDirection.ltr,
child: RenderConstrainedBox(
additionalConstraints: const BoxConstraints.tightFor(width: 200.0, height: 200.0),
),
alignment: Alignment.center,
);
// Constrained in vertical axis
final RenderConstraintsTransformBox unconstrained = RenderConstraintsTransformBox(
constraintsTransform: ConstraintsTransformBox.widthUnconstrained,
textDirection: TextDirection.ltr,
child: RenderFlex(
direction: Axis.vertical,
textDirection: TextDirection.ltr,
children: <RenderBox>[flexible],
),
alignment: Alignment.center,
);Migration assistantAI-generated · grounded in cited sources
AI explanations are not configured
Set
AI_PROVIDER (for example to openai-compatible with a local Ollama or LM Studio endpoint) to enable grounded explanations. Everything else on this page works without an AI provider.Official migration guide·Verified classification (90%)
Listed in the official breaking-changes index; title states removal.
An official announcement or migration guide documents an intended behaviour or API change. A verified source change (git diff) shows code changed but does not by itself prove a public API is breaking. AI interpretations are labelled and never used to classify a change.
Validation warnings
api-symbols: {"reason":"no referenced symbol found in the current API index","unresolved":["RenderUnconstrainedBox","RenderConstraintsTransformBox","ConstraintsTransformBox.unconstrained","RenderUnconstrainedBox.constrainedAxis","Axis.horizontal","ConstraintsTransformBox.widthUnconstrained","Axis.vertical","ConstraintsTransformBox.heightUnconstrained","ConstraintsTransformBox","DragAnchor","Draggable.dragAnchor","LongPressDraggable.dragAnchor","Stack","InteractiveViewer","Draggable","LongPressDraggable","DragAnchorStrategy","ScrollBehavior.buildViewportChrome","Scrollable","GlowingOverscrollIndicator","Scrollbar","ScrollBehavior"]}
- Source commit
- b3045439b7c0
- Source last updated
- Oct 21, 2026
- Last synchronized
- Oct 21, 2026
- Publication status
- published
Publication history
- Oct 21, 2026, 8:31 PM: new → published (ingestion) — Backed by an official breaking-change/migration guide.
AI explanationAI-generated · grounded in cited sources
AI explanations are not configured
Set
AI_PROVIDER (for example to openai-compatible with a local Ollama or LM Studio endpoint) to enable grounded explanations. Everything else on this page works without an AI provider.Was this useful?