mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
Reverts flutter/flutter#141484 Initiated by: eliasyishak This change reverts the following previous change: Original Description: The existing `runApp` bootstraps the widget tree and renders the provided widget into the default view (which is currently the implicit View from `PlatformDispatcher.implicitView` and - in the future - may be a default-created window). Apps, that want more control over the View they are rendered in, need a new way to bootstrap the widget tree: `runWidget`. It does not make any assumptions about the View the provided widget is rendered into. Instead, it is up to the caller to include a View widget in the provided widget tree that specifies where content should be rendered. In the future, this may enable developers to create a custom window for their app instead of relying on the default-created one.
44 lines
1.3 KiB
Dart
44 lines
1.3 KiB
Dart
// Copyright 2014 The Flutter 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';
|
|
|
|
import 'package:flutter/widgets.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
|
|
void main() {
|
|
testWidgets('Properly constraints the physical size', (WidgetTester tester) async {
|
|
final FlutterViewSpy view = FlutterViewSpy(view: tester.view)
|
|
..physicalConstraints = ViewConstraints.tight(const Size(1008.0, 2198.0))
|
|
..devicePixelRatio = 1.912500023841858;
|
|
|
|
await pumpWidgetWithoutViewWrapper(
|
|
tester: tester,
|
|
widget: View(
|
|
view: view,
|
|
child: const SizedBox(),
|
|
),
|
|
);
|
|
|
|
expect(view.sizes.single, const Size(1008.0, 2198.0));
|
|
});
|
|
}
|
|
|
|
class FlutterViewSpy extends TestFlutterView {
|
|
FlutterViewSpy({required TestFlutterView super.view}) : super(platformDispatcher: view.platformDispatcher, display: view.display);
|
|
|
|
List<Size?> sizes = <Size?>[];
|
|
|
|
@override
|
|
void render(Scene scene, {Size? size}) {
|
|
sizes.add(size);
|
|
}
|
|
}
|
|
|
|
Future<void> pumpWidgetWithoutViewWrapper({required WidgetTester tester, required Widget widget}) {
|
|
tester.binding.attachRootWidget(widget);
|
|
tester.binding.scheduleFrame();
|
|
return tester.binding.pump();
|
|
}
|