mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
This makes it more consistent with tightFor(), and also makes it easier to tighten both directions at once when you're not sure you will always do so (e.g. if you have a height and width that might be null, and want to tighten whichever ones aren't null).
102 lines
3.2 KiB
Dart
102 lines
3.2 KiB
Dart
// 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/material.dart';
|
|
import 'package:flutter/rendering.dart';
|
|
import 'package:test/test.dart';
|
|
|
|
import 'rendering_tester.dart';
|
|
|
|
void main() {
|
|
test("should size to render view", () {
|
|
RenderBox root = new RenderDecoratedBox(
|
|
decoration: new BoxDecoration(
|
|
backgroundColor: const Color(0xFF00FF00),
|
|
gradient: new RadialGradient(
|
|
center: Point.origin, radius: 500.0,
|
|
colors: <Color>[Colors.yellow[500], Colors.blue[500]]),
|
|
boxShadow: elevationToShadow[3])
|
|
);
|
|
layout(root);
|
|
expect(root.size.width, equals(800.0));
|
|
expect(root.size.height, equals(600.0));
|
|
});
|
|
|
|
test('Flex and padding', () {
|
|
RenderBox size = new RenderConstrainedBox(
|
|
additionalConstraints: new BoxConstraints().tighten(height: 100.0)
|
|
);
|
|
RenderBox inner = new RenderDecoratedBox(
|
|
decoration: new BoxDecoration(
|
|
backgroundColor: const Color(0xFF00FF00)
|
|
),
|
|
child: size
|
|
);
|
|
RenderBox padding = new RenderPadding(
|
|
padding: new EdgeDims.all(50.0),
|
|
child: inner
|
|
);
|
|
RenderBox flex = new RenderFlex(
|
|
children: <RenderBox>[padding],
|
|
direction: FlexDirection.vertical,
|
|
alignItems: FlexAlignItems.stretch
|
|
);
|
|
RenderBox outer = new RenderDecoratedBox(
|
|
decoration: new BoxDecoration(
|
|
backgroundColor: const Color(0xFF0000FF)
|
|
),
|
|
child: flex
|
|
);
|
|
|
|
layout(outer);
|
|
|
|
expect(size.size.width, equals(700.0));
|
|
expect(size.size.height, equals(100.0));
|
|
expect(inner.size.width, equals(700.0));
|
|
expect(inner.size.height, equals(100.0));
|
|
expect(padding.size.width, equals(800.0));
|
|
expect(padding.size.height, equals(200.0));
|
|
expect(flex.size.width, equals(800.0));
|
|
expect(flex.size.height, equals(600.0));
|
|
expect(outer.size.width, equals(800.0));
|
|
expect(outer.size.height, equals(600.0));
|
|
});
|
|
|
|
test("should not have a 0 sized colored Box", () {
|
|
var coloredBox = new RenderDecoratedBox(
|
|
decoration: new BoxDecoration()
|
|
);
|
|
var paddingBox = new RenderPadding(padding: const EdgeDims.all(10.0),
|
|
child: coloredBox);
|
|
RenderBox root = new RenderDecoratedBox(
|
|
decoration: new BoxDecoration(),
|
|
child: paddingBox
|
|
);
|
|
layout(root);
|
|
expect(coloredBox.size.width, equals(780.0));
|
|
expect(coloredBox.size.height, equals(580.0));
|
|
});
|
|
|
|
test("reparenting should clear position", () {
|
|
RenderDecoratedBox coloredBox = new RenderDecoratedBox(
|
|
decoration: new BoxDecoration());
|
|
RenderPadding paddedBox = new RenderPadding(
|
|
child: coloredBox, padding: const EdgeDims.all(10.0));
|
|
|
|
layout(paddedBox);
|
|
|
|
BoxParentData parentData = coloredBox.parentData;
|
|
expect(parentData.offset.dx, isNot(equals(0.0)));
|
|
|
|
paddedBox.child = null;
|
|
RenderConstrainedBox constraintedBox = new RenderConstrainedBox(
|
|
child: coloredBox, additionalConstraints: const BoxConstraints());
|
|
|
|
layout(constraintedBox);
|
|
|
|
parentData = coloredBox.parentData;
|
|
expect(parentData.offset.dx, equals(0.0));
|
|
});
|
|
}
|