
<!-- Thanks for filing a pull request! Reviewers are typically assigned within a week of filing a request. To learn more about code review, see our documentation on Tree Hygiene: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md --> This PR removes redundant useMaterial3: true as described in https://github.com/flutter/flutter/issues/162818 *List which issues are fixed by this PR. You must list at least one issue. An issue is not required if the PR fixes something trivial like a typo.* - https://github.com/flutter/flutter/issues/162818 ## 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. - [ ] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- 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 --------- Co-authored-by: Qun Cheng <36861262+QuncCccccc@users.noreply.github.com>
268 lines
10 KiB
Dart
268 lines
10 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 'package:flutter/material.dart';
|
|
import 'package:flutter_localizations/flutter_localizations.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
|
|
void main() {
|
|
testWidgets('Material2 - Text baseline with CJK locale', (WidgetTester tester) async {
|
|
// This test in combination with 'Text baseline with EN locale' verify the baselines
|
|
// used to align text with ideographic baselines are reasonable. We are currently
|
|
// using the alphabetic baseline to lay out as the ideographic baseline is not yet
|
|
// properly implemented. When the ideographic baseline is better defined and implemented,
|
|
// the values of this test should change very slightly. See the issue this is based off
|
|
// of: https://github.com/flutter/flutter/issues/25782.
|
|
final Key targetKey = UniqueKey();
|
|
await tester.pumpWidget(
|
|
MaterialApp(
|
|
theme: ThemeData(useMaterial3: false),
|
|
routes: <String, WidgetBuilder>{
|
|
'/next': (BuildContext context) {
|
|
return const Text('Next');
|
|
},
|
|
},
|
|
localizationsDelegates: GlobalMaterialLocalizations.delegates,
|
|
supportedLocales: const <Locale>[
|
|
Locale('en', 'US'),
|
|
Locale('es', 'ES'),
|
|
Locale('zh', 'CN'),
|
|
],
|
|
locale: const Locale('zh', 'CN'),
|
|
home: Material(
|
|
child: Center(
|
|
child: Builder(
|
|
key: targetKey,
|
|
builder: (BuildContext context) {
|
|
return PopupMenuButton<int>(
|
|
onSelected: (int value) {
|
|
Navigator.pushNamed(context, '/next');
|
|
},
|
|
itemBuilder: (BuildContext context) {
|
|
return <PopupMenuItem<int>>[
|
|
const PopupMenuItem<int>(
|
|
value: 1,
|
|
child: Text('hello, world', style: TextStyle(color: Colors.blue)),
|
|
),
|
|
const PopupMenuItem<int>(
|
|
value: 2,
|
|
child: Text('你好,世界', style: TextStyle(color: Colors.blue)),
|
|
),
|
|
];
|
|
},
|
|
);
|
|
},
|
|
),
|
|
),
|
|
),
|
|
),
|
|
);
|
|
|
|
await tester.tap(find.byKey(targetKey));
|
|
await tester.pumpAndSettle();
|
|
|
|
expect(find.text('hello, world'), findsOneWidget);
|
|
expect(find.text('你好,世界'), findsOneWidget);
|
|
|
|
expect(tester.getTopLeft(find.text('hello, world')).dy, 299.5);
|
|
expect(tester.getBottomLeft(find.text('hello, world')).dy, 316.5);
|
|
|
|
expect(tester.getTopLeft(find.text('你好,世界')).dy, 347.5);
|
|
expect(tester.getBottomLeft(find.text('你好,世界')).dy, 364.5);
|
|
});
|
|
|
|
testWidgets('Material3 - Text baseline with CJK locale', (WidgetTester tester) async {
|
|
// This test in combination with 'Text baseline with EN locale' verify the baselines
|
|
// used to align text with ideographic baselines are reasonable. We are currently
|
|
// using the alphabetic baseline to lay out as the ideographic baseline is not yet
|
|
// properly implemented. When the ideographic baseline is better defined and implemented,
|
|
// the values of this test should change very slightly. See the issue this is based off
|
|
// of: https://github.com/flutter/flutter/issues/25782.
|
|
final Key targetKey = UniqueKey();
|
|
await tester.pumpWidget(
|
|
MaterialApp(
|
|
routes: <String, WidgetBuilder>{
|
|
'/next': (BuildContext context) {
|
|
return const Text('Next');
|
|
},
|
|
},
|
|
localizationsDelegates: GlobalMaterialLocalizations.delegates,
|
|
supportedLocales: const <Locale>[
|
|
Locale('en', 'US'),
|
|
Locale('es', 'ES'),
|
|
Locale('zh', 'CN'),
|
|
],
|
|
locale: const Locale('zh', 'CN'),
|
|
home: Material(
|
|
child: Center(
|
|
child: Builder(
|
|
key: targetKey,
|
|
builder: (BuildContext context) {
|
|
return PopupMenuButton<int>(
|
|
onSelected: (int value) {
|
|
Navigator.pushNamed(context, '/next');
|
|
},
|
|
itemBuilder: (BuildContext context) {
|
|
return <PopupMenuItem<int>>[
|
|
const PopupMenuItem<int>(
|
|
value: 1,
|
|
child: Text('hello, world', style: TextStyle(color: Colors.blue)),
|
|
),
|
|
const PopupMenuItem<int>(
|
|
value: 2,
|
|
child: Text('你好,世界', style: TextStyle(color: Colors.blue)),
|
|
),
|
|
];
|
|
},
|
|
);
|
|
},
|
|
),
|
|
),
|
|
),
|
|
),
|
|
);
|
|
|
|
await tester.tap(find.byKey(targetKey));
|
|
await tester.pumpAndSettle();
|
|
|
|
expect(find.text('hello, world'), findsOneWidget);
|
|
expect(find.text('你好,世界'), findsOneWidget);
|
|
|
|
expect(tester.getTopLeft(find.text('hello, world')).dy, 298.0);
|
|
expect(tester.getBottomLeft(find.text('hello, world')).dy, 318.0);
|
|
|
|
expect(tester.getTopLeft(find.text('你好,世界')).dy, 346.0);
|
|
expect(tester.getBottomLeft(find.text('你好,世界')).dy, 366.0);
|
|
});
|
|
|
|
testWidgets('Material2 - Text baseline with EN locale', (WidgetTester tester) async {
|
|
// This test in combination with 'Text baseline with CJK locale' verify the baselines
|
|
// used to align text with ideographic baselines are reasonable. We are currently
|
|
// using the alphabetic baseline to lay out as the ideographic baseline is not yet
|
|
// properly implemented. When the ideographic baseline is better defined and implemented,
|
|
// the values of this test should change very slightly. See the issue this is based off
|
|
// of: https://github.com/flutter/flutter/issues/25782.
|
|
final Key targetKey = UniqueKey();
|
|
await tester.pumpWidget(
|
|
MaterialApp(
|
|
theme: ThemeData(useMaterial3: false),
|
|
routes: <String, WidgetBuilder>{
|
|
'/next': (BuildContext context) {
|
|
return const Text('Next');
|
|
},
|
|
},
|
|
localizationsDelegates: GlobalMaterialLocalizations.delegates,
|
|
supportedLocales: const <Locale>[
|
|
Locale('en', 'US'),
|
|
Locale('es', 'ES'),
|
|
Locale('zh', 'CN'),
|
|
],
|
|
locale: const Locale('en', 'US'),
|
|
home: Material(
|
|
child: Center(
|
|
child: Builder(
|
|
key: targetKey,
|
|
builder: (BuildContext context) {
|
|
return PopupMenuButton<int>(
|
|
onSelected: (int value) {
|
|
Navigator.pushNamed(context, '/next');
|
|
},
|
|
itemBuilder: (BuildContext context) {
|
|
return <PopupMenuItem<int>>[
|
|
const PopupMenuItem<int>(
|
|
value: 1,
|
|
child: Text('hello, world', style: TextStyle(color: Colors.blue)),
|
|
),
|
|
const PopupMenuItem<int>(
|
|
value: 2,
|
|
child: Text('你好,世界', style: TextStyle(color: Colors.blue)),
|
|
),
|
|
];
|
|
},
|
|
);
|
|
},
|
|
),
|
|
),
|
|
),
|
|
),
|
|
);
|
|
|
|
await tester.tap(find.byKey(targetKey));
|
|
await tester.pumpAndSettle();
|
|
|
|
expect(find.text('hello, world'), findsOneWidget);
|
|
expect(find.text('你好,世界'), findsOneWidget);
|
|
|
|
expect(tester.getTopLeft(find.text('hello, world')).dy, 300.0);
|
|
expect(tester.getBottomLeft(find.text('hello, world')).dy, 316.0);
|
|
|
|
expect(tester.getTopLeft(find.text('你好,世界')).dy, 348.0);
|
|
expect(tester.getBottomLeft(find.text('你好,世界')).dy, 364.0);
|
|
});
|
|
|
|
testWidgets('Material3 - Text baseline with EN locale', (WidgetTester tester) async {
|
|
// This test in combination with 'Text baseline with CJK locale' verify the baselines
|
|
// used to align text with ideographic baselines are reasonable. We are currently
|
|
// using the alphabetic baseline to lay out as the ideographic baseline is not yet
|
|
// properly implemented. When the ideographic baseline is better defined and implemented,
|
|
// the values of this test should change very slightly. See the issue this is based off
|
|
// of: https://github.com/flutter/flutter/issues/25782.
|
|
final Key targetKey = UniqueKey();
|
|
await tester.pumpWidget(
|
|
MaterialApp(
|
|
routes: <String, WidgetBuilder>{
|
|
'/next': (BuildContext context) {
|
|
return const Text('Next');
|
|
},
|
|
},
|
|
localizationsDelegates: GlobalMaterialLocalizations.delegates,
|
|
supportedLocales: const <Locale>[
|
|
Locale('en', 'US'),
|
|
Locale('es', 'ES'),
|
|
Locale('zh', 'CN'),
|
|
],
|
|
locale: const Locale('en', 'US'),
|
|
home: Material(
|
|
child: Center(
|
|
child: Builder(
|
|
key: targetKey,
|
|
builder: (BuildContext context) {
|
|
return PopupMenuButton<int>(
|
|
onSelected: (int value) {
|
|
Navigator.pushNamed(context, '/next');
|
|
},
|
|
itemBuilder: (BuildContext context) {
|
|
return <PopupMenuItem<int>>[
|
|
const PopupMenuItem<int>(
|
|
value: 1,
|
|
child: Text('hello, world', style: TextStyle(color: Colors.blue)),
|
|
),
|
|
const PopupMenuItem<int>(
|
|
value: 2,
|
|
child: Text('你好,世界', style: TextStyle(color: Colors.blue)),
|
|
),
|
|
];
|
|
},
|
|
);
|
|
},
|
|
),
|
|
),
|
|
),
|
|
),
|
|
);
|
|
|
|
await tester.tap(find.byKey(targetKey));
|
|
await tester.pumpAndSettle();
|
|
|
|
expect(find.text('hello, world'), findsOneWidget);
|
|
expect(find.text('你好,世界'), findsOneWidget);
|
|
|
|
expect(tester.getTopLeft(find.text('hello, world')).dy, 298.0);
|
|
expect(tester.getBottomLeft(find.text('hello, world')).dy, 318.0);
|
|
|
|
expect(tester.getTopLeft(find.text('你好,世界')).dy, 346.0);
|
|
expect(tester.getBottomLeft(find.text('你好,世界')).dy, 366.0);
|
|
});
|
|
}
|