// 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 'dart:ui' as ui; import 'package:flutter/rendering.dart'; RenderBox getBox(double lh) { RenderParagraph paragraph = new RenderParagraph( new StyledTextSpan( new TextStyle( color: const Color(0xFF0000A0) ), [ new PlainTextSpan('test'), new StyledTextSpan( new TextStyle( fontFamily: 'serif', fontSize: 50.0, height: lh ), [new PlainTextSpan('مرحبا Hello')] ) ] ) ); return new RenderPadding( padding: new EdgeDims.all(10.0), child: new RenderConstrainedBox( additionalConstraints: new BoxConstraints.tightFor(height: 200.0), child: new RenderDecoratedBox( decoration: new BoxDecoration( backgroundColor: const Color(0xFFFFFFFF) ), child: new RenderPadding( padding: new EdgeDims.all(10.0), child: new RenderCustomPaint( child: paragraph, onPaint: (canvas, size) { double baseline = paragraph.getDistanceToBaseline(TextBaseline.alphabetic); double w = paragraph.getMaxIntrinsicWidth(new BoxConstraints.loose(size)); double h = paragraph.getMaxIntrinsicHeight(new BoxConstraints.loose(size)); Path path = new Path(); path.moveTo(0.0, 0.0); path.lineTo(w, 0.0); path.moveTo(0.0, baseline); path.lineTo(w, baseline); path.moveTo(0.0, h); path.lineTo(w, h); Paint paint = new Paint() ..color = const Color(0xFFFF9000) ..style = ui.PaintingStyle.stroke ..strokeWidth = 3.0; canvas.drawPath(path, paint); } ) ) ) ) ); } void main() { RenderBox root = new RenderFlex(children: [ new RenderConstrainedBox( additionalConstraints: new BoxConstraints.tightFor(height: 50.0) ), getBox(1.0), getBox(null), ], direction: FlexDirection.vertical, alignItems: FlexAlignItems.stretch ); new FlutterBinding(root: root); }