anchor.diff:        child: new Text(selectedTime.minuteLabel, style: minuteStyle),
       );
   
  +    Widget colon = new Text(':', style: inactiveStyle);
  +
  +    EdgeInsets padding;
  +    double height;
  +    double width;
  +
       assert(orientation != null);
  -    switch (orientation) {
  +    switch(orientation) {
         case Orientation.portrait:
  -        return new Container(
  -          height: _kTimePickerHeaderPortraitHeight,
  -          padding: const EdgeInsets.symmetric(horizontal: 24.0),
  -          decoration: new BoxDecoration(backgroundColor: backgroundColor),
  -          child: new Row(
  -            children: <Widget>[
  -              new Flexible(child: hour),
  -              new Text(':', style: inactiveStyle),
  -              new Flexible(
  -                child: new Row(
  -                  children: <Widget>[
  -                    minute,
  -                    const SizedBox(width: 8.0, height: 0.0),  // Horizontal spacer
  -                    dayPeriodPicker,
  -                  ]
  -                )
  -              )
  -            ]
  -          )
  -        );
  +        height = _kTimePickerHeaderPortraitHeight;
  +        padding = const EdgeInsets.symmetric(horizontal: 24.0);
  +        break;
         case Orientation.landscape:
  -        return new Container(
  -          width: _kTimePickerHeaderLandscapeWidth,
  -          padding: const EdgeInsets.symmetric(horizontal: 16.0),
  -          decoration: new BoxDecoration(backgroundColor: backgroundColor),
  -          child: new Column(
  -            mainAxisAlignment: MainAxisAlignment.center,
  -            children: <Widget>[
  -              new Row(
  -                children: <Widget>[
  -                  new Flexible(child: hour),
  -                  new Text(':', style: inactiveStyle),
  -                  new Flexible(child: minute),
  -                ],
  -              ),
  -              const SizedBox(width: 0.0, height: 8.0),  // Vertical spacer
  -              dayPeriodPicker,
  -            ]
  -          )
  -        );
  -    }
  -    return null;
  +        width = _kTimePickerHeaderLandscapeWidth;
  +        padding = const EdgeInsets.symmetric(horizontal: 16.0);
  +        break;
  +    }
  +
  +    return new Container(
  +      width: width,
  +      height: height,
  +      padding: padding,
  +      decoration: new BoxDecoration(backgroundColor: backgroundColor),
  +      child: new CustomMultiChildLayout(
  +        delegate: new _TimePickerHeaderLayout(orientation),
  +        children: <Widget>[
  +          new LayoutId(id: _TimePickerHeaderId.hour, child: hour),
  +          new LayoutId(id: _TimePickerHeaderId.colon, child: colon),
  +          new LayoutId(id: _TimePickerHeaderId.minute, child: minute),
  +          new LayoutId(id: _TimePickerHeaderId.period, child: dayPeriodPicker),
  +        ],
  +      )
  +    );
     }
   }
   
  
positive.code: const double _kTimePickerHeaderLandscapeWidth = 168.0;
  
  const double _kTimePickerWidthPortrait = 328.0;
  const double _kTimePickerWidthLanscape = 512.0;
  
  const double _kTimePickerHeightPortrait = 484.0;
  const double _kTimePickerHeightLanscape = 304.0;
  
  // TODO(ianh): Localize!
  class _TimePickerHeader extends StatelessWidget {
  
negative.code:               );
              case Orientation.landscape:
                return new SizedBox(
                  width: _kTimePickerWidthLandscape,
                  height: _kTimePickerHeightLandscape,
                  child: new Row(
                    mainAxisSize: MainAxisSize.min,
                    crossAxisAlignment: CrossAxisAlignment.stretch,
  