mirror of
https://github.com/flutter/flutter
synced 2024-10-30 01:59:05 +00:00
Cupertino navbar ellipsis fix (#118841)
* Passdown context * make transitions ignore preffered text size * Add test * Add comment * Return const constructor
This commit is contained in:
parent
a07e8a6ac4
commit
3c769effad
2 changed files with 25 additions and 9 deletions
|
@ -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,
|
||||
|
|
Loading…
Reference in a new issue