Unverified Commit 3c769eff authored by Mitchell Goodwin's avatar Mitchell Goodwin Committed by GitHub

Cupertino navbar ellipsis fix (#118841)

* Passdown context

* make transitions ignore preffered text size

* Add test

* Add comment

* Return const constructor
parent a07e8a6a
......@@ -1770,12 +1770,16 @@ class _NavigationBarTransition extends StatelessWidget {
// The actual outer box is big enough to contain both the bottom and top
// navigation bars. It's not a direct Rect lerp because some components
// can actually be outside the linearly lerp'ed Rect in the middle of
// the animation, such as the topLargeTitle.
return SizedBox(
height: math.max(heightTween.begin!, heightTween.end!) + MediaQuery.paddingOf(context).top,
width: double.infinity,
child: Stack(
children: children,
// the animation, such as the topLargeTitle. The textScaleFactor is kept
// at 1 to avoid odd transitions between pages.
return MediaQuery(
data: MediaQuery.of(context).copyWith(textScaleFactor: 1),
child: SizedBox(
height: math.max(heightTween.begin!, heightTween.end!) + MediaQuery.paddingOf(context).top,
width: double.infinity,
child: Stack(
children: children,
),
),
);
}
......
......@@ -25,14 +25,18 @@ Future<void> startTransitionBetween(
String? toTitle,
TextDirection textDirection = TextDirection.ltr,
CupertinoThemeData? theme,
double textScale = 1.0,
}) async {
await tester.pumpWidget(
CupertinoApp(
theme: theme,
builder: (BuildContext context, Widget? navigator) {
return Directionality(
textDirection: textDirection,
child: navigator!,
return MediaQuery(
data: MediaQuery.of(context).copyWith(textScaleFactor: textScale),
child: Directionality(
textDirection: textDirection,
child: navigator!,
)
);
},
home: const Placeholder(),
......@@ -1225,6 +1229,14 @@ void main() {
expect(find.text('Page 1'), findsOneWidget);
});
testWidgets('textScaleFactor is set to 1.0 on transition', (WidgetTester tester) async {
await startTransitionBetween(tester, fromTitle: 'Page 1', textScale: 99);
await tester.pump(const Duration(milliseconds: 50));
expect(tester.firstWidget<RichText>(flying(tester, find.byType(RichText))).textScaleFactor, 1);
});
testWidgets('Back swipe gesture cancels properly with transition', (WidgetTester tester) async {
await startTransitionBetween(
tester,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment