flutter/packages/flutter/test_fixes/widgets/widgets.dart.expect
Enguerrand ARMINJON 585e20a15f
feat: removeRoute now call didComplete (#157725)
**(edited 4 december) PR EDITED TO FIT LATEST COMMENTS**

Developper may want to remove a route in the background while an other
one is displayed.
To do so, developer can use removeRoute().

RemoveRoute() didn't resolve futures created by Navigator.push and so
code which await for Navigator.push will never end.

By calling complete() inside removeRoute, futures are well resolved. In
addition that also allow to pass some result through removeRoute.

Ex: 

```dart
Navigator.of(context).removeRoute(route, "test");
Navigator.of(context).removeRoute(route, object);
```

This PR aim to fix this issue :
https://github.com/flutter/flutter/issues/157505

## Pre-launch Checklist

- [X] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [X] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [X] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [X] I signed the [CLA].
- [X] I listed at least one issue that this PR fixes in the description
above.
- [X] I updated/added relevant documentation (doc comments with `///`).
- [X] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [X] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [X] All existing and new tests are passing.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
2025-02-12 22:36:49 +00:00

224 lines
8.9 KiB
Plaintext

// 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 'package:flutter/widgets.dart';
class _TestRouteTransitionRecord extends RouteTransitionRecord {
@override
bool get isWaitingForEnteringDecision => throw UnimplementedError();
@override
bool get isWaitingForExitingDecision => throw UnimplementedError();
@override
void markForAdd() {}
@override
void markForComplete([dynamic result]) {}
@override
void markForPop([dynamic result]) {}
@override
void markForPush() {}
@override
void markForRemove() {}
@override
Route<dynamic> get route => throw UnimplementedError();
}
void main() {
// Generic reference variables.
BuildContext context;
RenderObjectWidget renderObjectWidget;
RenderObject renderObject;
Object object;
TickerProvider vsync;
// Changes made in https://github.com/flutter/flutter/pull/123352
WidgetsBinding.instance.rootElement;
// Changes made in https://github.com/flutter/flutter/pull/119647
MediaQueryData.fromView(View.of(context));
// Changes made in https://github.com/flutter/flutter/pull/119186 and https://github.com/flutter/flutter/pull/81067
AnimatedSize(duration: Duration.zero);
// Changes made in https://github.com/flutter/flutter/pull/45941 and https://github.com/flutter/flutter/pull/83843
final WidgetsBinding binding = WidgetsBinding.instance;
binding.deferFirstFrame();
binding.allowFirstFrame();
// Changes made in https://github.com/flutter/flutter/pull/44189
const StatefulElement statefulElement = StatefulElement(myWidget);
statefulElement.dependOnInheritedElement(ancestor);
// Changes made in https://github.com/flutter/flutter/pull/61648
const Form form = Form(autovalidateMode: AutovalidateMode.always);
const Form form = Form(autovalidateMode: AutovalidateMode.disabled);
const Form form = Form(error: '');
final autoMode = form.autovalidateMode;
// Changes made in https://github.com/flutter/flutter/pull/61648
const FormField formField = FormField(autovalidateMode: AutovalidateMode.always);
const FormField formField = FormField(autovalidateMode: AutovalidateMode.disabled);
const FormField formField = FormField(error: '');
final autoMode = formField.autovalidateMode;
// Changes made in https://github.com/flutter/flutter/pull/66305
const Stack stack = Stack(clipBehavior: Clip.none);
const Stack stack = Stack(clipBehavior: Clip.hardEdge);
const Stack stack = Stack(error: '');
final behavior = stack.clipBehavior;
// Changes made in https://github.com/flutter/flutter/pull/68736
MediaQuery.maybeOf(context);
MediaQuery.of(context);
MediaQuery.of(error: '');
// Changes made in https://github.com/flutter/flutter/pull/70726
Navigator.maybeOf(context);
Navigator.of(context);
Navigator.of(error: '');
// Changes made in https://github.com/flutter/flutter/pull/68910
Router.maybeOf(context);
Router.of(context);
Router.of(error: '');
// Changes made in https://github.com/flutter/flutter/pull/68911
Localizations.maybeLocaleOf(context);
Localizations.localeOf(context);
Localizations.localeOf(error: '');
// Changes made in https://github.com/flutter/flutter/pull/68917
FocusTraversalOrder.maybeOf(context);
FocusTraversalOrder.of(context);
FocusTraversalOrder.of(error: '');
FocusTraversalGroup.of(error: '');
FocusTraversalGroup.maybeOf(context);
FocusTraversalGroup.of(context);
Focus.maybeOf(context);
Focus.of(context);
Focus.of(error: '');
// Changes made in https://github.com/flutter/flutter/pull/68921
Shortcuts.maybeOf(context);
Shortcuts.of(context);
Shortcuts.of(error: '');
// Changes made in https://github.com/flutter/flutter/pull/68925
AnimatedList.maybeOf(context);
AnimatedList.of(context);
AnimatedList.of(error: '');
SliverAnimatedList.of(error: '');
SliverAnimatedList.maybeOf(context);
SliverAnimatedList.of(context);
// Changes made in https://github.com/flutter/flutter/pull/59127
const BottomNavigationBarItem bottomNavigationBarItem =
BottomNavigationBarItem(label: myTitle);
const BottomNavigationBarItem bottomNavigationBarItem =
BottomNavigationBarItem();
const BottomNavigationBarItem bottomNavigationBarItem =
BottomNavigationBarItem(error: '');
bottomNavigationBarItem.label;
// Changes made in https://github.com/flutter/flutter/pull/79160
Draggable draggable = Draggable();
draggable = Draggable(dragAnchorStrategy: childDragAnchorStrategy);
draggable = Draggable(dragAnchorStrategy: pointerDragAnchorStrategy);
draggable = Draggable(error: '');
draggable.dragAnchorStrategy;
// Changes made in https://github.com/flutter/flutter/pull/79160
LongPressDraggable longPressDraggable = LongPressDraggable();
longPressDraggable = LongPressDraggable(dragAnchorStrategy: childDragAnchorStrategy);
longPressDraggable = LongPressDraggable(dragAnchorStrategy: pointerDragAnchorStrategy);
longPressDraggable = LongPressDraggable(error: '');
longPressDraggable.dragAnchorStrategy;
// Changes made in https://github.com/flutter/flutter/pull/64254
final LeafRenderObjectElement leafElement = LeafRenderObjectElement();
leafElement.insertRenderObjectChild(renderObject, object);
leafElement.moveRenderObjectChild(renderObject, object);
leafElement.removeRenderObjectChild(renderObject);
final ListWheelElement listWheelElement = ListWheelElement();
listWheelElement.insertRenderObjectChild(renderObject, object);
listWheelElement.moveRenderObjectChild(renderObject, object);
listWheelElement.removeRenderObjectChild(renderObject);
final MultiChildRenderObjectElement multiChildRenderObjectElement =
MultiChildRenderObjectElement();
multiChildRenderObjectElement.insertRenderObjectChild(renderObject, object);
multiChildRenderObjectElement.moveRenderObjectChild(renderObject, object);
multiChildRenderObjectElement.removeRenderObjectChild(renderObject);
final SingleChildRenderObjectElement singleChildRenderObjectElement =
SingleChildRenderObjectElement();
singleChildRenderObjectElement.insertRenderObjectChild(renderObject, object);
singleChildRenderObjectElement.moveRenderObjectChild(renderObject, object);
singleChildRenderObjectElement.removeRenderObjectChild(renderObject);
final SliverMultiBoxAdaptorElement sliverMultiBoxAdaptorElement =
SliverMultiBoxAdaptorElement();
sliverMultiBoxAdaptorElement.insertRenderObjectChild(renderObject, object);
sliverMultiBoxAdaptorElement.moveRenderObjectChild(renderObject, object);
sliverMultiBoxAdaptorElement.removeRenderObjectChild(renderObject);
final RenderObjectToWidgetElement renderObjectToWidgetElement =
RenderObjectToWidgetElement(widget);
renderObjectToWidgetElement.insertRenderObjectChild(renderObject, object);
renderObjectToWidgetElement.moveRenderObjectChild(renderObject, object);
renderObjectToWidgetElement.removeRenderObjectChild(renderObject);
// Changes made in https://docs.flutter.dev/release/breaking-changes/clip-behavior
ListWheelViewport listWheelViewport = ListWheelViewport();
listWheelViewport = ListWheelViewport(clipBehavior: Clip.hardEdge);
listWheelViewport = ListWheelViewport(clipBehavior: Clip.none);
listWheelViewport = ListWheelViewport(error: '');
listWheelViewport.clipBehavior;
// Changes made in https://github.com/flutter/flutter/pull/87839
final OverscrollIndicatorNotification notification =
OverscrollIndicatorNotification(leading: true);
final OverscrollIndicatorNotification notification =
OverscrollIndicatorNotification(error: '');
notification.disallowIndicator();
// Changes made in https://github.com/flutter/flutter/pull/96957
RawScrollbar rawScrollbar = RawScrollbar(thumbVisibility: true);
nowShowing = rawScrollbar.thumbVisibility;
// Change made in https://github.com/flutter/flutter/pull/100381
SelectionOverlay.fadeDuration;
// Changes made in https://github.com/flutter/flutter/pull/78588
final ScrollBehavior scrollBehavior = ScrollBehavior();
scrollBehavior.buildOverscrollIndicator(context, child, axisDirection);
// Changes made in https://github.com/flutter/flutter/pull/114459
MediaQuery.boldTextOf(context);
// Changes made in https://github.com/flutter/flutter/pull/122555
final ScrollableDetails details = ScrollableDetails(
direction: AxisDirection.down,
decorationClipBehavior: Clip.none,
);
final Clip clip = details.decorationClipBehavior;
final PlatformMenuBar platformMenuBar = PlatformMenuBar(
menus: <PlatformMenuItem>[],
child: const SizedBox(),
);
final Widget bodyValue = platformMenuBar.child;
// Changes made in https://github.com/flutter/flutter/pull/139260
final NavigatorState state = Navigator.of(context);
state.focusNode.enclosingScope!;
// Changes made in https://github.com/flutter/flutter/pull/157725
final _TestRouteTransitionRecord testRouteTransitionRecord =
_TestRouteTransitionRecord();
testRouteTransitionRecord.markForComplete();
}