// Copyright 2015 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import 'package:flutter/rendering.dart'; import 'lib/solid_color_box.dart'; Duration timeBase; RenderTransform transformBox; void main() { RenderFlex flexRoot = new RenderFlex(direction: FlexDirection.vertical); void addFlexChildSolidColor(RenderFlex parent, Color backgroundColor, { int flex: 0 }) { RenderSolidColorBox child = new RenderSolidColorBox(backgroundColor); parent.add(child); final FlexParentData childParentData = child.parentData; childParentData.flex = flex; } addFlexChildSolidColor(flexRoot, const Color(0xFFFF00FF), flex: 1); addFlexChildSolidColor(flexRoot, const Color(0xFFFFFF00), flex: 2); addFlexChildSolidColor(flexRoot, const Color(0xFF00FFFF), flex: 1); transformBox = new RenderTransform(child: flexRoot, transform: new Matrix4.identity()); RenderPadding root = new RenderPadding(padding: new EdgeDims.all(20.0), child: transformBox); new RenderingFlutterBinding(root: root) ..addPersistentFrameCallback(rotate); } void rotate(Duration timeStamp) { if (timeBase == null) timeBase = timeStamp; double delta = (timeStamp - timeBase).inMicroseconds.toDouble() / Duration.MICROSECONDS_PER_SECOND; // radians transformBox.setIdentity(); transformBox.translate(transformBox.size.width / 2.0, transformBox.size.height / 2.0); transformBox.rotateZ(delta); transformBox.translate(-transformBox.size.width / 2.0, -transformBox.size.height / 2.0); }