Unverified Commit 65550d0f authored by Tonic Artos's avatar Tonic Artos Committed by GitHub

New license page. (#57588)

This is a PR addressing #57226 - Proposal: New UI for Licenses Page.

This PR replaces the previous single panel license page with one that uses a master/detail flow (MDFlow) to display packages and their respective licenses.

The License Page API remains unchanged. The logic for processing the license data is kept largely the same. This PR changes how the licenses are displayed, by introducing a responsive UI using the master/detail UI pattern. For now I am calling it Master Detail Flow, or MDFlow.

MDFlow manifests as two layouts depending on the screen size. On small and medium displays, as determined by the breakpoints given by the Material Design Spec, MDFlow utilises a nested layout. On large displays, MDFlow uses a two panel (lateral) layout. MDFlow is implemented in this PR using a Navigator for the nested layout, and a Stack for the lateral layout. The master and detail views are built using builders. For the interactive component, detail pages are requested from the master view using a proxy obtained by a widget lookup on the build context; MasterDetailFlow.of(context).
parent 15a28159
......@@ -122,6 +122,9 @@ abstract class MaterialLocalizations {
/// Title for the [LicensePage] widget.
String get licensesPageTitle;
/// Subtitle for a package in the [LicensePage] widget.
String licensesPackageDetailText(int licenseCount);
/// Title for the [PaginatedDataTable]'s row info footer.
String pageRowsInfoTitle(int firstRow, int lastRow, int rowCount, bool rowCountIsApproximate);
......@@ -860,6 +863,17 @@ class DefaultMaterialLocalizations implements MaterialLocalizations {
@override
String get licensesPageTitle => 'Licenses';
@override
String licensesPackageDetailText(int licenseCount) {
assert (licenseCount >= 1);
switch (licenseCount) {
case 1:
return '1 license';
default:
return '$licenseCount licenses';
}
}
@override
String pageRowsInfoTitle(int firstRow, int lastRow, int rowCount, bool rowCountIsApproximate) {
return rowCountIsApproximate
......
......@@ -92,6 +92,8 @@ void main() {
find.text('I am the very model of a modern major general.'),
findsOneWidget,
);
await tester.tap(find.text('Pirate package '));
await tester.pumpAndSettle(const Duration(milliseconds: 100));
expect(find.text('Pirate license'), findsOneWidget);
}, skip: isBrowser); // https://github.com/flutter/flutter/issues/54385
......@@ -136,9 +138,23 @@ void main() {
await tester.pumpAndSettle();
// Check for packages.
expect(find.text('AAA'), findsOneWidget);
expect(find.text('BBB'), findsOneWidget);
expect(find.text('Another package'), findsOneWidget);
// Check license is displayed after entering into license page for 'AAA'.
await tester.tap(find.text('AAA'));
await tester.pumpAndSettle(const Duration(milliseconds: 100));
expect(find.text('BBB'), findsOneWidget);
/// Go back to list of packages.
await tester.pageBack();
await tester.pumpAndSettle();
/// Check license is displayed after entering into license page for
/// 'Another package'.
await tester.tap(find.text('Another package'));
await tester.pumpAndSettle(const Duration(milliseconds: 100));
expect(find.text('Another license'), findsOneWidget);
}, skip: isBrowser); // https://github.com/flutter/flutter/issues/54385
......@@ -197,9 +213,24 @@ void main() {
find.text('I am the very model of a modern major general.'),
findsOneWidget,
);
// Check for packages.
expect(find.text('AAA'), findsOneWidget);
expect(find.text('BBB'), findsOneWidget);
expect(find.text('Another package'), findsOneWidget);
// Check license is displayed after entering into license page for 'AAA'.
await tester.tap(find.text('AAA'));
await tester.pumpAndSettle(const Duration(milliseconds: 100));
expect(find.text('BBB'), findsOneWidget);
/// Go back to list of packages.
await tester.pageBack();
await tester.pumpAndSettle();
/// Check license is displayed after entering into license page for
/// 'Another package'.
await tester.tap(find.text('Another package'));
await tester.pumpAndSettle(const Duration(milliseconds: 100));
expect(find.text('Another license'), findsOneWidget);
}, skip: isBrowser); // https://github.com/flutter/flutter/issues/54385
......@@ -225,7 +256,12 @@ void main() {
await tester.pumpAndSettle();
expect(tester.getTopLeft(find.text('DEF')), const Offset(8.0 + safeareaPadding, 287.0));
// The position of the top left of app bar title should indicate whether
// the safe area is sufficiently respected.
expect(
tester.getTopLeft(find.text('Licenses')),
const Offset(16.0 + safeareaPadding, 18.0 + safeareaPadding),
);
}, skip: isBrowser); // https://github.com/flutter/flutter/issues/54385
testWidgets('LicensePage returns early if unmounted', (WidgetTester tester) async {
......@@ -250,7 +286,7 @@ void main() {
await tester.pumpAndSettle();
final FakeLicenseEntry licenseEntry = FakeLicenseEntry();
licenseCompleter.complete(licenseEntry);
expect(licenseEntry.paragraphsCalled, false);
expect(licenseEntry.packagesCalled, false);
});
testWidgets('LicensePage returns late if unmounted', (WidgetTester tester) async {
......@@ -275,7 +311,7 @@ void main() {
);
await tester.pumpAndSettle();
expect(licenseEntry.paragraphsCalled, true);
expect(licenseEntry.packagesCalled, true);
});
testWidgets('LicensePage logic defaults to executable name for app name', (WidgetTester tester) async {
......@@ -524,16 +560,16 @@ void main() {
class FakeLicenseEntry extends LicenseEntry {
FakeLicenseEntry();
bool get paragraphsCalled => _paragraphsCalled;
bool _paragraphsCalled = false;
bool get packagesCalled => _packagesCalled;
bool _packagesCalled = false;
@override
Iterable<String> packages = <String>[];
Iterable<LicenseParagraph> paragraphs = <LicenseParagraph>[];
@override
Iterable<LicenseParagraph> get paragraphs {
_paragraphsCalled = true;
return <LicenseParagraph>[];
Iterable<String> get packages {
_packagesCalled = true;
return <String>[];
}
}
......
......@@ -88,5 +88,13 @@ void main() {
expect(localizations.pageRowsInfoTitle(1, 10, 100, false).contains(r'$firstRow'), isFalse);
expect(localizations.pageRowsInfoTitle(1, 10, 100, false).contains(r'$lastRow'), isFalse);
expect(localizations.pageRowsInfoTitle(1, 10, 100, false).contains(r'$rowCount'), isFalse);
expect(() => localizations.licensesPackageDetailText(0), throwsAssertionError);
expect(localizations.licensesPackageDetailText(1), isNotNull);
expect(localizations.licensesPackageDetailText(2), isNotNull);
expect(localizations.licensesPackageDetailText(100), isNotNull);
expect(localizations.licensesPackageDetailText(1).contains(r'$licensesCount'), isFalse);
expect(localizations.licensesPackageDetailText(2).contains(r'$licensesCount'), isFalse);
expect(localizations.licensesPackageDetailText(100).contains(r'$licensesCount'), isFalse);
});
}
......@@ -69,5 +69,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -69,5 +69,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -77,5 +77,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -69,5 +69,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -69,5 +69,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -73,5 +73,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -70,5 +70,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -69,5 +69,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -72,5 +72,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -70,5 +70,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -74,5 +74,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -70,5 +70,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -71,5 +71,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -70,5 +70,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -72,6 +72,13 @@
"description": "The title for the Flutter licenses page."
},
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses",
"@licensesPackageDetailText": {
"description": "The subtitle and detail text for a package displayed on the Flutter licenses page. The value of $licenseCount is an integer which indicates the number of licenses the package has. A zero value is not allowed.",
"plural": "licenseCount"
},
"pageRowsInfoTitle": "$firstRow–$lastRow of $rowCount",
"@pageRowsInfoTitle": {
"description": "The text shown in the footer of a paginated data table when the exact overall row count is known. This message describes an integer range where $firstRow is the index of the start of the range, $lastRow is the index of the end of the range, and $rowCount is the limit of the range. All values are greater than or equal to zero.",
......
......@@ -19,6 +19,8 @@
"showMenuTooltip": "Show menu",
"aboutListTileTitle": "About $applicationName",
"licensesPageTitle": "Licences",
"licensesPackageDetailTextOne": "1 licence",
"licensesPackageDetailTextOther": "$licenseCount licences",
"pageRowsInfoTitle": "$firstRow–$lastRow of $rowCount",
"pageRowsInfoTitleApproximate": "$firstRow–$lastRow of about $rowCount",
"rowsPerPageTitle": "Rows per page:",
......
......@@ -19,6 +19,8 @@
"showMenuTooltip": "Show menu",
"aboutListTileTitle": "About $applicationName",
"licensesPageTitle": "Licences",
"licensesPackageDetailTextOne": "1 licence",
"licensesPackageDetailTextOther": "$licenseCount licences",
"pageRowsInfoTitle": "$firstRow–$lastRow of $rowCount",
"pageRowsInfoTitleApproximate": "$firstRow–$lastRow of about $rowCount",
"rowsPerPageTitle": "Rows per page:",
......
......@@ -19,6 +19,8 @@
"aboutListTileTitle": "About $applicationName",
"backButtonTooltip": "Back",
"licensesPageTitle": "Licences",
"licensesPackageDetailTextOne": "1 licence",
"licensesPackageDetailTextOther": "$licenseCount licences",
"okButtonLabel": "OK",
"pasteButtonLabel": "PASTE",
"previousMonthTooltip": "Previous month",
......
......@@ -19,6 +19,8 @@
"aboutListTileTitle": "About $applicationName",
"backButtonTooltip": "Back",
"licensesPageTitle": "Licences",
"licensesPackageDetailTextOne": "1 licence",
"licensesPackageDetailTextOther": "$licenseCount licences",
"okButtonLabel": "OK",
"pasteButtonLabel": "PASTE",
"previousMonthTooltip": "Previous month",
......
......@@ -19,6 +19,8 @@
"showMenuTooltip": "Show menu",
"aboutListTileTitle": "About $applicationName",
"licensesPageTitle": "Licences",
"licensesPackageDetailTextOne": "1 licence",
"licensesPackageDetailTextOther": "$licenseCount licences",
"pageRowsInfoTitle": "$firstRow–$lastRow of $rowCount",
"pageRowsInfoTitleApproximate": "$firstRow–$lastRow of about $rowCount",
"rowsPerPageTitle": "Rows per page:",
......
......@@ -13,6 +13,8 @@
"showMenuTooltip": "Show menu",
"aboutListTileTitle": "About $applicationName",
"licensesPageTitle": "Licences",
"licensesPackageDetailTextOne": "1 licence",
"licensesPackageDetailTextOther": "$licenseCount licences",
"pageRowsInfoTitle": "$firstRow–$lastRow of $rowCount",
"pageRowsInfoTitleApproximate": "$firstRow–$lastRow of about $rowCount",
"rowsPerPageTitle": "Rows per page:",
......
......@@ -19,6 +19,8 @@
"showMenuTooltip": "Show menu",
"aboutListTileTitle": "About $applicationName",
"licensesPageTitle": "Licences",
"licensesPackageDetailTextOne": "1 licence",
"licensesPackageDetailTextOther": "$licenseCount licences",
"pageRowsInfoTitle": "$firstRow–$lastRow of $rowCount",
"pageRowsInfoTitleApproximate": "$firstRow–$lastRow of about $rowCount",
"rowsPerPageTitle": "Rows per page:",
......
......@@ -19,6 +19,8 @@
"aboutListTileTitle": "About $applicationName",
"backButtonTooltip": "Back",
"licensesPageTitle": "Licences",
"licensesPackageDetailTextOne": "1 licence",
"licensesPackageDetailTextOther": "$licenseCount licences",
"okButtonLabel": "OK",
"pasteButtonLabel": "PASTE",
"previousMonthTooltip": "Previous month",
......
......@@ -71,5 +71,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -70,5 +70,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -69,5 +69,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -70,5 +70,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -70,5 +70,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -70,5 +70,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -71,5 +71,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -71,5 +71,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -70,5 +70,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -69,5 +69,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -74,5 +74,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -70,5 +70,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -72,5 +72,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -70,5 +70,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -75,5 +75,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -70,5 +70,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -69,5 +69,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -70,5 +70,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -70,5 +70,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -69,5 +69,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -71,5 +71,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -70,5 +70,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -69,5 +69,7 @@
"datePickerHelpText": "\u0053\u0045\u004c\u0045\u0043\u0054\u0020\u0044\u0041\u0054\u0045",
"dateRangePickerHelpText": "\u0053\u0045\u004c\u0045\u0043\u0054\u0020\u0052\u0041\u004e\u0047\u0045",
"calendarModeButtonLabel": "\u0053\u0077\u0069\u0074\u0063\u0068\u0020\u0074\u006f\u0020\u0063\u0061\u006c\u0065\u006e\u0064\u0061\u0072",
"inputDateModeButtonLabel": "\u0053\u0077\u0069\u0074\u0063\u0068\u0020\u0074\u006f\u0020\u0069\u006e\u0070\u0075\u0074"
"inputDateModeButtonLabel": "\u0053\u0077\u0069\u0074\u0063\u0068\u0020\u0074\u006f\u0020\u0069\u006e\u0070\u0075\u0074",
"licensesPackageDetailTextOne": "\u0031\u0020\u006c\u0069\u0063\u0065\u006e\u0073\u0065",
"licensesPackageDetailTextOther": "\u0024\u006c\u0069\u0063\u0065\u006e\u0073\u0065\u0043\u006f\u0075\u006e\u0074\u0020\u006c\u0069\u0063\u0065\u006e\u0073\u0065\u0073"
}
......@@ -70,5 +70,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -69,5 +69,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -69,5 +69,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -74,5 +74,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -71,5 +71,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -69,5 +69,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -69,5 +69,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -71,5 +71,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -71,5 +71,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -71,5 +71,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -69,5 +69,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -69,5 +69,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -70,5 +70,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -70,5 +70,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -69,5 +69,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -69,5 +69,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -74,5 +74,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -69,5 +69,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -72,5 +72,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -73,5 +73,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -75,5 +75,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -69,5 +69,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -74,5 +74,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -74,5 +74,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -69,5 +69,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -72,5 +72,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -70,5 +70,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -71,5 +71,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -71,5 +71,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -69,5 +69,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -70,5 +70,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -70,5 +70,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -70,5 +70,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -74,5 +74,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -70,5 +70,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -69,5 +69,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -70,5 +70,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -70,5 +70,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -69,5 +69,7 @@
"datePickerHelpText": "SELECT DATE",
"dateRangePickerHelpText": "SELECT RANGE",
"calendarModeButtonLabel": "Switch to calendar",
"inputDateModeButtonLabel": "Switch to input"
"inputDateModeButtonLabel": "Switch to input",
"licensesPackageDetailTextOne": "1 license",
"licensesPackageDetailTextOther": "$licenseCount licenses"
}
......@@ -446,6 +446,115 @@ abstract class GlobalMaterialLocalizations implements MaterialLocalizations {
return timeOfDayFormatRaw;
}
/// The "zero" form of [licensesPackageDetailText].
///
/// This form is optional.
///
/// See also:
///
/// * [Intl.plural], to which this form is passed.
/// * [licensesPackageDetailTextZero], the "zero" form
/// * [licensesPackageDetailTextOne], the "one" form
/// * [licensesPackageDetailTextTwo], the "two" form
/// * [licensesPackageDetailTextFew], the "few" form
/// * [licensesPackageDetailTextMany], the "many" form
/// * [licensesPackageDetailTextOther], the "other" form
@protected
String get licensesPackageDetailTextZero => null;
/// The "one" form of [licensesPackageDetailText].
///
/// This form is optional.
///
/// See also:
///
/// * [licensesPackageDetailTextZero], the "zero" form
/// * [licensesPackageDetailTextOne], the "one" form
/// * [licensesPackageDetailTextTwo], the "two" form
/// * [licensesPackageDetailTextFew], the "few" form
/// * [licensesPackageDetailTextMany], the "many" form
/// * [licensesPackageDetailTextOther], the "other" form
@protected
String get licensesPackageDetailTextOne => null;
/// The "two" form of [licensesPackageDetailText].
///
/// This form is optional.
///
/// See also:
///
/// * [Intl.plural], to which this form is passed.
/// * [licensesPackageDetailTextZero], the "zero" form
/// * [licensesPackageDetailTextOne], the "one" form
/// * [licensesPackageDetailTextTwo], the "two" form
/// * [licensesPackageDetailTextFew], the "few" form
/// * [licensesPackageDetailTextMany], the "many" form
/// * [licensesPackageDetailTextOther], the "other" form
@protected
String get licensesPackageDetailTextTwo => null;
/// The "many" form of [licensesPackageDetailText].
///
/// This form is optional.
///
/// See also:
///
/// * [Intl.plural], to which this form is passed.
/// * [licensesPackageDetailTextZero], the "zero" form
/// * [licensesPackageDetailTextOne], the "one" form
/// * [licensesPackageDetailTextTwo], the "two" form
/// * [licensesPackageDetailTextFew], the "few" form
/// * [licensesPackageDetailTextMany], the "many" form
/// * [licensesPackageDetailTextOther], the "other" form
@protected
String get licensesPackageDetailTextMany => null;
/// The "few" form of [licensesPackageDetailText].
///
/// This form is optional.
///
/// See also:
///
/// * [Intl.plural], to which this form is passed.
/// * [licensesPackageDetailTextZero], the "zero" form
/// * [licensesPackageDetailTextOne], the "one" form
/// * [licensesPackageDetailTextTwo], the "two" form
/// * [licensesPackageDetailTextFew], the "few" form
/// * [licensesPackageDetailTextMany], the "many" form
/// * [licensesPackageDetailTextOther], the "other" form
@protected
String get licensesPackageDetailTextFew => null;
/// The "other" form of [licensesPackageDetailText].
///
/// This form is required.
///
/// See also:
///
/// * [Intl.plural], to which this form is passed.
/// * [licensesPackageDetailTextZero], the "zero" form
/// * [licensesPackageDetailTextOne], the "one" form
/// * [licensesPackageDetailTextTwo], the "two" form
/// * [licensesPackageDetailTextFew], the "few" form
/// * [licensesPackageDetailTextMany], the "many" form
/// * [licensesPackageDetailTextOther], the "other" form
@protected
String get licensesPackageDetailTextOther;
@override
String licensesPackageDetailText(int licenseCount) {
return intl.Intl.pluralLogic(
licenseCount,
zero: licensesPackageDetailTextZero,
one: licensesPackageDetailTextOne,
two: licensesPackageDetailTextTwo,
many: licensesPackageDetailTextMany,
few: licensesPackageDetailTextFew,
other: licensesPackageDetailTextOther,
locale: _localeName,
).replaceFirst(r'$licenseCount', formatDecimal(licenseCount));
}
/// The "zero" form of [remainingTextFieldCharacterCount].
///
/// This form is required.
......
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