A box with a specified size.

If given a child, this widget forces its child to have a specific width and/or height (assuming values are permitted by this widget's parent). If either the width or height is null, this widget will size itself to match the child's size in that dimension.

If not given a child, this widget will size itself to the given width and height, treating nulls as zero.

The new SizedBox.expand constructor can be used to make a SizedBox that sizes itself to fit the parent. It is equivalent to setting width and height to double.INFINITY.

Sample code

This snippet makes the child widget (a Card with some Text) have the exact size 200x300, parental constraints permitting:

new SizedBox(
  width: 200.0,
  height: 300.0,
  child: const Card(child: const Text('Hello World!')),

See also:

  • ConstrainedBox, a more generic version of this class that takes arbitrary BoxConstraints instead of an explicit width and height.
  • FractionallySizedBox, a widget that sizes its child to a fraction of the total available space.
  • AspectRatio, a widget that attempts to fit within the parent's constraints while also sizing its child to match a given sapect ratio.
  • FittedBox, which sizes and positions its child widget to fit the parent according to a given BoxFit discipline.


SizedBox({Key key, double width, double height, Widget child })
Creates a fixed size box. The width and height parameters can be null to indicate that the size of the box should not be constrained in the corresponding dimension.
SizedBox.expand({Key key, Widget child })
Creates a box that will become as large as its parent allows.
SizedBox.fromSize({Key key, Widget child, Size size })
Creates a box with the specified size.


height double
If non-null, requires the child to have exactly this height.
width double
If non-null, requires the child to have exactly this width.
child Widget
The widget below this widget in the tree.
final, inherited
hashCode int
The hash code for this object. [...]
read-only, inherited
key Key
Controls how one widget replaces another widget in the tree. [...]
final, inherited
runtimeType Type
A representation of the runtime type of the object.
read-only, inherited


createRenderObject(BuildContext context) RenderConstrainedBox
Creates an instance of the RenderObject class that this RenderObjectWidget represents, using the configuration described by this RenderObjectWidget. [...]
debugFillProperties(DiagnosticPropertiesBuilder description) → void
toStringShort() String
A short, textual description of this widget.
updateRenderObject(BuildContext context, RenderConstrainedBox renderObject) → void
Copies the configuration described by this RenderObjectWidget to the given RenderObject, which will be of the same type as returned by this object's createRenderObject. [...]
createElement() SingleChildRenderObjectElement
RenderObjectWidgets always inflate to a RenderObjectElement subclass.
debugDescribeChildren() List<DiagnosticsNode>
Returns a list of DiagnosticsNode objects describing this node's children. [...]
@protected, inherited
didUnmountRenderObject(RenderObject renderObject) → void
A render object previously associated with this widget has been removed from the tree. The given RenderObject will be of the same type as returned by this object's createRenderObject.
@protected, inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent method or property is accessed. [...]
toDiagnosticsNode({String name, DiagnosticsTreeStyle style }) DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by toStringDeep. [...]
toString() String
Returns a string representation of this object.
toStringDeep([String prefixLineOne = '', String prefixOtherLines ]) String
Returns a string representation of this node and its descendants. [...]
toStringShallow([String joiner = ', ' ]) String
Returns a one-line detailed description of the object. [...]


operator ==(other) bool
The equality operator. [...]