mirror of
https://github.com/alibaba/flutter-go.git
synced 2025-07-07 09:25:03 +08:00
79 lines
2.1 KiB
Dart
79 lines
2.1 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_web/material.dart';
|
|
import 'package:flutter_web/rendering.dart';
|
|
import '../flutter_test_alternative.dart';
|
|
|
|
import 'rendering_tester.dart';
|
|
|
|
class RenderLayoutTestBox extends RenderProxyBox {
|
|
RenderLayoutTestBox(this.onLayout);
|
|
|
|
final VoidCallback onLayout;
|
|
|
|
@override
|
|
void layout(Constraints constraints, {bool parentUsesSize = false}) {
|
|
// Doing this in tests is ok, but if you're writing your own
|
|
// render object, you want to override performLayout(), not
|
|
// layout(). Overriding layout() would remove many critical
|
|
// performance optimizations of the rendering system, as well as
|
|
// many bypassing many checked-mode integrity checks.
|
|
super.layout(constraints, parentUsesSize: parentUsesSize);
|
|
onLayout();
|
|
}
|
|
|
|
@override
|
|
bool get sizedByParent => true;
|
|
|
|
@override
|
|
void performLayout() {}
|
|
}
|
|
|
|
void main() {
|
|
test('moving children', () {
|
|
RenderBox child1, child2;
|
|
bool movedChild1 = false;
|
|
bool movedChild2 = false;
|
|
final RenderFlex block = RenderFlex(textDirection: TextDirection.ltr);
|
|
block.add(child1 = RenderLayoutTestBox(() {
|
|
movedChild1 = true;
|
|
}));
|
|
block.add(child2 = RenderLayoutTestBox(() {
|
|
movedChild2 = true;
|
|
}));
|
|
|
|
expect(movedChild1, isFalse);
|
|
expect(movedChild2, isFalse);
|
|
layout(block);
|
|
expect(movedChild1, isTrue);
|
|
expect(movedChild2, isTrue);
|
|
|
|
movedChild1 = false;
|
|
movedChild2 = false;
|
|
|
|
expect(movedChild1, isFalse);
|
|
expect(movedChild2, isFalse);
|
|
pumpFrame();
|
|
expect(movedChild1, isFalse);
|
|
expect(movedChild2, isFalse);
|
|
|
|
block.move(child1, after: child2);
|
|
expect(movedChild1, isFalse);
|
|
expect(movedChild2, isFalse);
|
|
pumpFrame();
|
|
expect(movedChild1, isTrue);
|
|
expect(movedChild2, isTrue);
|
|
|
|
movedChild1 = false;
|
|
movedChild2 = false;
|
|
|
|
expect(movedChild1, isFalse);
|
|
expect(movedChild2, isFalse);
|
|
pumpFrame();
|
|
expect(movedChild1, isFalse);
|
|
expect(movedChild2, isFalse);
|
|
});
|
|
}
|