Unverified Commit d5a10340 authored by Michael Goderbauer's avatar Michael Goderbauer Committed by GitHub

Expandable Search (#17629)

parent 711174a9
......@@ -24,6 +24,7 @@ export 'page_selector_demo.dart';
export 'persistent_bottom_sheet_demo.dart';
export 'progress_indicator_demo.dart';
export 'scrollable_tabs_demo.dart';
export 'search_demo.dart';
export 'selection_controls_demo.dart';
export 'slider_demo.dart';
export 'snack_bar_demo.dart';
......
// Copyright 2018 The Chromium 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';
class SearchDemo extends StatefulWidget {
static const String routeName = '/material/search';
@override
_SearchDemoState createState() => new _SearchDemoState();
}
class _SearchDemoState extends State<SearchDemo> {
final _SearchDemoSearchDelegate _delegate = new _SearchDemoSearchDelegate();
final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();
int _lastIntegerSelected;
@override
Widget build(BuildContext context) {
return new Scaffold(
key: _scaffoldKey,
appBar: new AppBar(
leading: new IconButton(
tooltip: 'Navigation menu',
icon: new AnimatedIcon(
icon: AnimatedIcons.menu_arrow,
color: Colors.white,
progress: _delegate.transitionAnimation,
),
onPressed: () {
_scaffoldKey.currentState.openDrawer();
},
),
title: const Text('Numbers'),
actions: <Widget>[
new IconButton(
tooltip: 'Search',
icon: const Icon(Icons.search),
onPressed: () async {
final int selected = await showSearch<int>(
context: context,
delegate: _delegate,
);
if (selected != null && selected != _lastIntegerSelected) {
setState(() {
_lastIntegerSelected = selected;
});
}
},
),
new IconButton(
tooltip: 'More (not implemented)',
icon: const Icon(Icons.more_vert),
onPressed: () {},
),
],
),
body: new Center(
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new MergeSemantics(
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new Row(
mainAxisAlignment: MainAxisAlignment.center,
children: const <Widget>[
const Text('Press the '),
const Tooltip(
message: 'search',
child: const Icon(
Icons.search,
size: 18.0,
),
),
const Text(' icon in the AppBar'),
],
),
const Text('and search for an integer between 0 and 100,000.'),
],
),
),
const SizedBox(height: 64.0),
new Text('Last selected integer: ${_lastIntegerSelected ?? 'NONE' }.')
],
),
),
floatingActionButton: new FloatingActionButton.extended(
tooltip: 'Back', // Tests depend on this label to exit the demo.
onPressed: () {
Navigator.of(context).pop();
},
label: const Text('Close demo'),
icon: const Icon(Icons.close),
),
drawer: new Drawer(
child: new Column(
children: <Widget>[
const UserAccountsDrawerHeader(
accountName: const Text('Zach Widget'),
accountEmail: const Text('zach.widget@example.com'),
currentAccountPicture: const CircleAvatar(
backgroundImage: const AssetImage(
'shrine/vendors/zach.jpg',
package: 'flutter_gallery_assets',
),
),
margin: EdgeInsets.zero,
),
new MediaQuery.removePadding(
context: context,
// DrawerHeader consumes top MediaQuery padding.
removeTop: true,
child: const ListTile(
leading: const Icon(Icons.payment),
title: const Text('Placeholder'),
),
),
],
),
),
);
}
}
class _SearchDemoSearchDelegate extends SearchDelegate<int> {
final List<int> _data = new List<int>.generate(100001, (int i) => i).reversed.toList();
final List<int> _history = <int>[42607, 85604, 66374, 44, 174];
@override
Widget buildLeading(BuildContext context) {
return new IconButton(
tooltip: 'Back',
icon: new AnimatedIcon(
icon: AnimatedIcons.menu_arrow,
progress: transitionAnimation,
),
onPressed: () {
close(context, null);
},
);
}
@override
Widget buildSuggestions(BuildContext context) {
final Iterable<int> suggestions = query.isEmpty
? _history
: _data.where((int i) => '$i'.startsWith(query));
return new _SuggestionList(
query: query,
suggestions: suggestions.map((int i) => '$i').toList(),
onSelected: (String suggestion) {
query = suggestion;
showResults(context);
},
);
}
@override
Widget buildResults(BuildContext context) {
final int searched = int.tryParse(query);
if (searched == null || !_data.contains(searched)) {
return new Center(
child: new Text(
'"$query"\n is not a valid integer between 0 and 100,000.\nTry again.',
textAlign: TextAlign.center,
),
);
}
return new ListView(
children: <Widget>[
new _ResultCard(
title: 'This integer',
integer: searched,
searchDelegate: this,
),
new _ResultCard(
title: 'Next integer',
integer: searched + 1,
searchDelegate: this,
),
new _ResultCard(
title: 'Previous integer',
integer: searched - 1,
searchDelegate: this,
),
],
);
}
@override
List<Widget> buildActions(BuildContext context) {
return <Widget>[
query.isEmpty
? new IconButton(
tooltip: 'Voice Search',
icon: const Icon(Icons.mic),
onPressed: () {
query = 'TODO: implement voice input';
},
)
: new IconButton(
tooltip: 'Clear',
icon: const Icon(Icons.clear),
onPressed: () {
query = '';
showSuggestions(context);
},
)
];
}
}
class _ResultCard extends StatelessWidget {
const _ResultCard({this.integer, this.title, this.searchDelegate});
final int integer;
final String title;
final SearchDelegate<int> searchDelegate;
@override
Widget build(BuildContext context) {
final ThemeData theme = Theme.of(context);
return new GestureDetector(
onTap: () {
searchDelegate.close(context, integer);
},
child: new Card(
child: new Padding(
padding: const EdgeInsets.all(8.0),
child: new Column(
children: <Widget>[
new Text(title),
new Text(
'$integer',
style: theme.textTheme.headline.copyWith(fontSize: 72.0),
),
],
),
),
),
);
}
}
class _SuggestionList extends StatelessWidget {
const _SuggestionList({this.suggestions, this.query, this.onSelected});
final List<String> suggestions;
final String query;
final ValueChanged<String> onSelected;
@override
Widget build(BuildContext context) {
final ThemeData theme = Theme.of(context);
return new ListView.builder(
itemCount: suggestions.length,
itemBuilder: (BuildContext context, int i) {
final String suggestion = suggestions[i];
return new ListTile(
leading: query.isEmpty ? const Icon(Icons.history) : const Icon(null),
title: new RichText(
text: new TextSpan(
text: suggestion.substring(0, query.length),
style: theme.textTheme.subhead.copyWith(fontWeight: FontWeight.bold),
children: <TextSpan>[
new TextSpan(
text: suggestion.substring(query.length),
style: theme.textTheme.subhead,
),
],
),
),
onTap: () {
onSelected(suggestion);
},
);
},
);
}
}
......@@ -313,6 +313,14 @@ List<GalleryDemo> _buildGalleryDemos() {
routeName: OverscrollDemo.routeName,
buildRoute: (BuildContext context) => const OverscrollDemo(),
),
new GalleryDemo(
title: 'Search',
subtitle: 'Expandable search',
icon: Icons.search,
category: _kMaterialComponents,
routeName: SearchDemo.routeName,
buildRoute: (BuildContext context) => new SearchDemo(),
),
new GalleryDemo(
title: 'Selection controls',
subtitle: 'Checkboxes, radio buttons, and switches',
......
......@@ -78,6 +78,7 @@ export 'src/material/raised_button.dart';
export 'src/material/refresh_indicator.dart';
export 'src/material/scaffold.dart';
export 'src/material/scrollbar.dart';
export 'src/material/search.dart';
export 'src/material/shadows.dart';
export 'src/material/slider.dart';
export 'src/material/slider_theme.dart';
......
......@@ -160,6 +160,10 @@ abstract class MaterialLocalizations {
/// alert dialog widget is opened.
String get alertDialogLabel;
/// Label indicating that a text field is a search field. This will be used
/// as a hint text in the text field.
String get searchFieldLabel;
/// The format used to lay out the time picker.
///
/// The documentation for [TimeOfDayFormat] enum values provides details on
......@@ -537,6 +541,9 @@ class DefaultMaterialLocalizations implements MaterialLocalizations {
@override
String get alertDialogLabel => 'Alert';
@override
String get searchFieldLabel => 'Search';
@override
String aboutListTileTitle(String applicationName) => 'About $applicationName';
......
This diff is collapsed.
......@@ -34,6 +34,7 @@ void main() {
expect(localizations.popupMenuLabel, isNotNull);
expect(localizations.dialogLabel, isNotNull);
expect(localizations.alertDialogLabel, isNotNull);
expect(localizations.searchFieldLabel, isNotNull);
expect(localizations.aboutListTileTitle('FOO'), isNotNull);
expect(localizations.aboutListTileTitle('FOO'), contains('FOO'));
......
This diff is collapsed.
......@@ -64,6 +64,7 @@ class TranslationBundle {
String get popupMenuLabel => parent?.popupMenuLabel;
String get dialogLabel => parent?.dialogLabel;
String get alertDialogLabel => parent?.alertDialogLabel;
String get searchFieldLabel => parent?.searchFieldLabel;
}
// ignore: camel_case_types
......@@ -113,6 +114,7 @@ class _Bundle_ar extends TranslationBundle {
@override String get popupMenuLabel => r'قائمة منبثقة';
@override String get dialogLabel => r'مربع حوار';
@override String get alertDialogLabel => r'مربع حوار التنبيه';
@override String get searchFieldLabel => r'بحث';
}
// ignore: camel_case_types
......@@ -159,6 +161,7 @@ class _Bundle_de extends TranslationBundle {
@override String get popupMenuLabel => r'Pop-up-Menü';
@override String get dialogLabel => r'Dialogfeld';
@override String get alertDialogLabel => r'Aufmerksam';
@override String get searchFieldLabel => r'Suchen';
}
// ignore: camel_case_types
......@@ -205,6 +208,7 @@ class _Bundle_en extends TranslationBundle {
@override String get popupMenuLabel => r'Popup menu';
@override String get dialogLabel => r'Dialog';
@override String get alertDialogLabel => r'Alert';
@override String get searchFieldLabel => r'Search';
}
// ignore: camel_case_types
......@@ -251,6 +255,7 @@ class _Bundle_es extends TranslationBundle {
@override String get popupMenuLabel => r'Menú emergente';
@override String get dialogLabel => r'Cuadro de diálogo';
@override String get alertDialogLabel => r'Alerta';
@override String get searchFieldLabel => r'Buscar';
}
// ignore: camel_case_types
......@@ -296,6 +301,7 @@ class _Bundle_fa extends TranslationBundle {
@override String get popupMenuLabel => r'منوی بازشو';
@override String get dialogLabel => r'کادر گفتگو';
@override String get alertDialogLabel => r'هشدار';
@override String get searchFieldLabel => r'جستجو کردن';
}
// ignore: camel_case_types
......@@ -342,6 +348,7 @@ class _Bundle_fr extends TranslationBundle {
@override String get popupMenuLabel => r'Menu contextuel';
@override String get dialogLabel => r'Boîte de dialogue';
@override String get alertDialogLabel => r'Alerte';
@override String get searchFieldLabel => r'Chercher';
}
// ignore: camel_case_types
......@@ -387,6 +394,7 @@ class _Bundle_gsw extends TranslationBundle {
@override String get popupMenuLabel => r'Pop-up-Menü';
@override String get dialogLabel => r'Dialogfeld';
@override String get alertDialogLabel => r'Aufmerksam';
@override String get searchFieldLabel => r'Suchen';
}
// ignore: camel_case_types
......@@ -434,6 +442,7 @@ class _Bundle_he extends TranslationBundle {
@override String get popupMenuLabel => r'תפריט קופץ';
@override String get dialogLabel => r'תיבת דו-שיח';
@override String get alertDialogLabel => r'עֵרָנִי';
@override String get searchFieldLabel => r'לחפש';
}
// ignore: camel_case_types
......@@ -479,6 +488,7 @@ class _Bundle_id extends TranslationBundle {
@override String get popupMenuLabel => r'Menu pop-up';
@override String get dialogLabel => r'Dialog';
@override String get alertDialogLabel => r'Waspada';
@override String get searchFieldLabel => r'Pencarian';
}
// ignore: camel_case_types
......@@ -524,6 +534,7 @@ class _Bundle_it extends TranslationBundle {
@override String get popupMenuLabel => r'Menu popup';
@override String get dialogLabel => r'Finestra di dialogo';
@override String get alertDialogLabel => r'Mettere in guardia';
@override String get searchFieldLabel => r'Ricerca';
}
// ignore: camel_case_types
......@@ -569,6 +580,7 @@ class _Bundle_ja extends TranslationBundle {
@override String get popupMenuLabel => r'ポップアップ メニュー';
@override String get dialogLabel => r'ダイアログ';
@override String get alertDialogLabel => r'アラート';
@override String get searchFieldLabel => r'サーチ';
}
// ignore: camel_case_types
......@@ -614,6 +626,7 @@ class _Bundle_ko extends TranslationBundle {
@override String get popupMenuLabel => r'팝업 메뉴';
@override String get dialogLabel => r'대화상자';
@override String get alertDialogLabel => r'경보';
@override String get searchFieldLabel => r'수색';
}
// ignore: camel_case_types
......@@ -660,6 +673,7 @@ class _Bundle_ms extends TranslationBundle {
@override String get popupMenuLabel => r'Menu pop timbul';
@override String get dialogLabel => r'Dialog';
@override String get alertDialogLabel => r'Amaran';
@override String get searchFieldLabel => r'Carian';
}
// ignore: camel_case_types
......@@ -705,6 +719,7 @@ class _Bundle_nb extends TranslationBundle {
@override String get popupMenuLabel => r'Forgrunnsmeny';
@override String get dialogLabel => r'Dialogboks';
@override String get alertDialogLabel => r'Varsling';
@override String get searchFieldLabel => r'Søke';
}
// ignore: camel_case_types
......@@ -750,6 +765,7 @@ class _Bundle_nl extends TranslationBundle {
@override String get popupMenuLabel => r'Pop-upmenu';
@override String get dialogLabel => r'Dialoogvenster';
@override String get alertDialogLabel => r'Alarm';
@override String get searchFieldLabel => r'Zoeken';
}
// ignore: camel_case_types
......@@ -797,6 +813,7 @@ class _Bundle_pl extends TranslationBundle {
@override String get popupMenuLabel => r'Wyskakujące menu';
@override String get dialogLabel => r'Okno dialogowe';
@override String get alertDialogLabel => r'Alarm';
@override String get searchFieldLabel => r'Szukaj';
}
// ignore: camel_case_types
......@@ -839,6 +856,7 @@ class _Bundle_ps extends TranslationBundle {
@override String get popupMenuLabel => r'د پاپ اپ مینو';
@override String get dialogLabel => r'خبرې اترې';
@override String get alertDialogLabel => r'خبرتیا';
@override String get searchFieldLabel => r'لټون';
}
// ignore: camel_case_types
......@@ -884,6 +902,7 @@ class _Bundle_pt extends TranslationBundle {
@override String get popupMenuLabel => r'Menu pop-up';
@override String get dialogLabel => r'Caixa de diálogo';
@override String get alertDialogLabel => r'Alerta';
@override String get searchFieldLabel => r'Pesquisa';
}
// ignore: camel_case_types
......@@ -931,6 +950,7 @@ class _Bundle_ro extends TranslationBundle {
@override String get popupMenuLabel => r'Meniu pop-up';
@override String get dialogLabel => r'Casetă de dialog';
@override String get alertDialogLabel => r'Alerta';
@override String get searchFieldLabel => r'Căutare';
}
// ignore: camel_case_types
......@@ -979,6 +999,7 @@ class _Bundle_ru extends TranslationBundle {
@override String get popupMenuLabel => r'Всплывающее меню';
@override String get dialogLabel => r'Диалоговое окно';
@override String get alertDialogLabel => r'бдительный';
@override String get searchFieldLabel => r'Поиск';
}
// ignore: camel_case_types
......@@ -1024,6 +1045,7 @@ class _Bundle_th extends TranslationBundle {
@override String get popupMenuLabel => r'เมนูป๊อปอัป';
@override String get dialogLabel => r'กล่องโต้ตอบ';
@override String get alertDialogLabel => r'เตือนภัย';
@override String get searchFieldLabel => r'ค้นหา';
}
// ignore: camel_case_types
......@@ -1069,6 +1091,7 @@ class _Bundle_tr extends TranslationBundle {
@override String get popupMenuLabel => r'Popup menü';
@override String get dialogLabel => r'İletişim kutusu';
@override String get alertDialogLabel => r'Alarm';
@override String get searchFieldLabel => r'Arama';
}
// ignore: camel_case_types
......@@ -1114,6 +1137,7 @@ class _Bundle_ur extends TranslationBundle {
@override String get popupMenuLabel => r'پاپ اپ مینو';
@override String get dialogLabel => r'ڈائیلاگ';
@override String get alertDialogLabel => r'انتباہ';
@override String get searchFieldLabel => r'تلاش کریں';
}
// ignore: camel_case_types
......@@ -1159,6 +1183,7 @@ class _Bundle_vi extends TranslationBundle {
@override String get popupMenuLabel => r'Menu bật lên';
@override String get dialogLabel => r'Hộp thoại';
@override String get alertDialogLabel => r'Hộp thoại';
@override String get searchFieldLabel => r'Tìm kiếm';
}
// ignore: camel_case_types
......@@ -1204,6 +1229,7 @@ class _Bundle_zh extends TranslationBundle {
@override String get popupMenuLabel => r'弹出菜单';
@override String get dialogLabel => r'对话框';
@override String get alertDialogLabel => r'警报';
@override String get searchFieldLabel => r'搜索';
}
// ignore: camel_case_types
......
......@@ -42,5 +42,6 @@
"drawerLabel": "قائمة تنقل",
"popupMenuLabel": "قائمة منبثقة",
"dialogLabel": "مربع حوار",
"alertDialogLabel": "مربع حوار التنبيه"
"alertDialogLabel": "مربع حوار التنبيه",
"searchFieldLabel": "بحث"
}
......@@ -39,5 +39,6 @@
"drawerLabel": "Navigationsmenü",
"popupMenuLabel": "Pop-up-Menü",
"dialogLabel": "Dialogfeld",
"alertDialogLabel": "Aufmerksam"
"alertDialogLabel": "Aufmerksam",
"searchFieldLabel": "Suchen"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Navigationsmenü",
"popupMenuLabel": "Pop-up-Menü",
"dialogLabel": "Dialogfeld",
"alertDialogLabel": "Aufmerksam"
"alertDialogLabel": "Aufmerksam",
"searchFieldLabel": "Suchen"
}
......@@ -199,5 +199,10 @@
"alertDialogLabel": "Alert",
"@dialogLabel": {
"description": "The audio announcement made when an AlertDialog is opened."
}
},
"searchFieldLabel": "Search",
"@dialogLabel": {
"description": "Label indicating that a text field is a search field. This will be used as a hint text in the text field."
}
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Navigation menu",
"popupMenuLabel": "Pop-up menu",
"dialogLabel": "Dialogue",
"alertDialogLabel": "Alert"
"alertDialogLabel": "Alert",
"searchFieldLabel": "Search"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Navigation menu",
"popupMenuLabel": "Pop-up menu",
"dialogLabel": "Dialogue",
"alertDialogLabel": "Alert"
"alertDialogLabel": "Alert",
"searchFieldLabel": "Search"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Navigation menu",
"popupMenuLabel": "Pop-up menu",
"dialogLabel": "Dialogue",
"alertDialogLabel": "Alert"
"alertDialogLabel": "Alert",
"searchFieldLabel": "Search"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Navigation menu",
"popupMenuLabel": "Pop-up menu",
"dialogLabel": "Dialogue",
"alertDialogLabel": "Alert"
"alertDialogLabel": "Alert",
"searchFieldLabel": "Search"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Navigation menu",
"popupMenuLabel": "Pop-up menu",
"dialogLabel": "Dialogue",
"alertDialogLabel": "Alert"
"alertDialogLabel": "Alert",
"searchFieldLabel": "Search"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Navigation menu",
"popupMenuLabel": "Pop-up menu",
"dialogLabel": "Dialogue",
"alertDialogLabel": "Alert"
"alertDialogLabel": "Alert",
"searchFieldLabel": "Search"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Navigation menu",
"popupMenuLabel": "Pop-up menu",
"dialogLabel": "Dialogue",
"alertDialogLabel": "Alert"
"alertDialogLabel": "Alert",
"searchFieldLabel": "Search"
}
......@@ -39,5 +39,6 @@
"drawerLabel": "Menú de navegación",
"popupMenuLabel": "Menú emergente",
"dialogLabel": "Cuadro de diálogo",
"alertDialogLabel": "Alerta"
"alertDialogLabel": "Alerta",
"searchFieldLabel": "Buscar"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Menú de navegación",
"popupMenuLabel": "Menú emergente",
"dialogLabel": "Diálogo",
"alertDialogLabel": "Alerta"
"alertDialogLabel": "Alerta",
"searchFieldLabel": "Buscar"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Menú de navegación",
"popupMenuLabel": "Menú emergente",
"dialogLabel": "Diálogo",
"alertDialogLabel": "Alerta"
"alertDialogLabel": "Alerta",
"searchFieldLabel": "Buscar"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Menú de navegación",
"popupMenuLabel": "Menú emergente",
"dialogLabel": "Diálogo",
"alertDialogLabel": "Alerta"
"alertDialogLabel": "Alerta",
"searchFieldLabel": "Buscar"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Menú de navegación",
"popupMenuLabel": "Menú emergente",
"dialogLabel": "Diálogo",
"alertDialogLabel": "Alerta"
"alertDialogLabel": "Alerta",
"searchFieldLabel": "Buscar"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Menú de navegación",
"popupMenuLabel": "Menú emergente",
"dialogLabel": "Diálogo",
"alertDialogLabel": "Alerta"
"alertDialogLabel": "Alerta",
"searchFieldLabel": "Buscar"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Menú de navegación",
"popupMenuLabel": "Menú emergente",
"dialogLabel": "Diálogo",
"alertDialogLabel": "Alerta"
"alertDialogLabel": "Alerta",
"searchFieldLabel": "Buscar"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Menú de navegación",
"popupMenuLabel": "Menú emergente",
"dialogLabel": "Diálogo",
"alertDialogLabel": "Alerta"
"alertDialogLabel": "Alerta",
"searchFieldLabel": "Buscar"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Menú de navegación",
"popupMenuLabel": "Menú emergente",
"dialogLabel": "Diálogo",
"alertDialogLabel": "Alerta"
"alertDialogLabel": "Alerta",
"searchFieldLabel": "Buscar"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Menú de navegación",
"popupMenuLabel": "Menú emergente",
"dialogLabel": "Diálogo",
"alertDialogLabel": "Alerta"
"alertDialogLabel": "Alerta",
"searchFieldLabel": "Buscar"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Menú de navegación",
"popupMenuLabel": "Menú emergente",
"dialogLabel": "Diálogo",
"alertDialogLabel": "Alerta"
"alertDialogLabel": "Alerta",
"searchFieldLabel": "Buscar"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Menú de navegación",
"popupMenuLabel": "Menú emergente",
"dialogLabel": "Diálogo",
"alertDialogLabel": "Alerta"
"alertDialogLabel": "Alerta",
"searchFieldLabel": "Buscar"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Menú de navegación",
"popupMenuLabel": "Menú emergente",
"dialogLabel": "Diálogo",
"alertDialogLabel": "Alerta"
"alertDialogLabel": "Alerta",
"searchFieldLabel": "Buscar"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Menú de navegación",
"popupMenuLabel": "Menú emergente",
"dialogLabel": "Diálogo",
"alertDialogLabel": "Alerta"
"alertDialogLabel": "Alerta",
"searchFieldLabel": "Buscar"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Menú de navegación",
"popupMenuLabel": "Menú emergente",
"dialogLabel": "Diálogo",
"alertDialogLabel": "Alerta"
"alertDialogLabel": "Alerta",
"searchFieldLabel": "Buscar"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Menú de navegación",
"popupMenuLabel": "Menú emergente",
"dialogLabel": "Diálogo",
"alertDialogLabel": "Alerta"
"alertDialogLabel": "Alerta",
"searchFieldLabel": "Buscar"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Menú de navegación",
"popupMenuLabel": "Menú emergente",
"dialogLabel": "Diálogo",
"alertDialogLabel": "Alerta"
"alertDialogLabel": "Alerta",
"searchFieldLabel": "Buscar"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Menú de navegación",
"popupMenuLabel": "Menú emergente",
"dialogLabel": "Diálogo",
"alertDialogLabel": "Alerta"
"alertDialogLabel": "Alerta",
"searchFieldLabel": "Buscar"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Menú de navegación",
"popupMenuLabel": "Menú emergente",
"dialogLabel": "Diálogo",
"alertDialogLabel": "Alerta"
"alertDialogLabel": "Alerta",
"searchFieldLabel": "Buscar"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Menú de navegación",
"popupMenuLabel": "Menú emergente",
"dialogLabel": "Diálogo",
"alertDialogLabel": "Alerta"
"alertDialogLabel": "Alerta",
"searchFieldLabel": "Buscar"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Menú de navegación",
"popupMenuLabel": "Menú emergente",
"dialogLabel": "Diálogo",
"alertDialogLabel": "Alerta"
"alertDialogLabel": "Alerta",
"searchFieldLabel": "Buscar"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "منوی پیمایش",
"popupMenuLabel": "منوی بازشو",
"dialogLabel": "کادر گفتگو",
"alertDialogLabel": "هشدار"
"alertDialogLabel": "هشدار",
"searchFieldLabel": "جستجو کردن"
}
......@@ -39,5 +39,6 @@
"drawerLabel": "Menu de navigation",
"popupMenuLabel": "Menu contextuel",
"dialogLabel": "Boîte de dialogue",
"alertDialogLabel": "Alerte"
"alertDialogLabel": "Alerte",
"searchFieldLabel": "Chercher"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Navigationsmenü",
"popupMenuLabel": "Pop-up-Menü",
"dialogLabel": "Dialogfeld",
"alertDialogLabel": "Aufmerksam"
"alertDialogLabel": "Aufmerksam",
"searchFieldLabel": "Suchen"
}
......@@ -40,5 +40,6 @@
"drawerLabel": "תפריט ניווט",
"popupMenuLabel": "תפריט קופץ",
"dialogLabel": "תיבת דו-שיח",
"alertDialogLabel": "עֵרָנִי"
"alertDialogLabel": "עֵרָנִי",
"searchFieldLabel": "לחפש"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Menu navigasi",
"popupMenuLabel": "Menu pop-up",
"dialogLabel": "Dialog",
"alertDialogLabel": "Waspada"
"alertDialogLabel": "Waspada",
"searchFieldLabel": "Pencarian"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Menu di navigazione",
"popupMenuLabel": "Menu popup",
"dialogLabel": "Finestra di dialogo",
"alertDialogLabel": "Mettere in guardia"
"alertDialogLabel": "Mettere in guardia",
"searchFieldLabel": "Ricerca"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "ナビゲーション メニュー",
"popupMenuLabel": "ポップアップ メニュー",
"dialogLabel": "ダイアログ",
"alertDialogLabel": "アラート"
"alertDialogLabel": "アラート",
"searchFieldLabel": "サーチ"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "탐색 메뉴",
"popupMenuLabel": "팝업 메뉴",
"dialogLabel": "대화상자",
"alertDialogLabel": "경보"
"alertDialogLabel": "경보",
"searchFieldLabel": "수색"
}
......@@ -39,5 +39,6 @@
"drawerLabel": "Menu navigasi",
"popupMenuLabel": "Menu pop timbul",
"dialogLabel": "Dialog",
"alertDialogLabel": "Amaran"
"alertDialogLabel": "Amaran",
"searchFieldLabel": "Carian"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Navigasjonsmeny",
"popupMenuLabel": "Forgrunnsmeny",
"dialogLabel": "Dialogboks",
"alertDialogLabel": "Varsling"
"alertDialogLabel": "Varsling",
"searchFieldLabel": "Søke"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Navigatiemenu",
"popupMenuLabel": "Pop-upmenu",
"dialogLabel": "Dialoogvenster",
"alertDialogLabel": "Alarm"
"alertDialogLabel": "Alarm",
"searchFieldLabel": "Zoeken"
}
......@@ -40,5 +40,6 @@
"drawerLabel": "Menu nawigacyjne",
"popupMenuLabel": "Wyskakujące menu",
"dialogLabel": "Okno dialogowe",
"alertDialogLabel": "Alarm"
"alertDialogLabel": "Alarm",
"searchFieldLabel": "Szukaj"
}
......@@ -37,5 +37,6 @@
"drawerLabel": "د نیویگیشن مینو",
"popupMenuLabel": "د پاپ اپ مینو",
"dialogLabel": "خبرې اترې",
"alertDialogLabel": "خبرتیا"
"alertDialogLabel": "خبرتیا",
"searchFieldLabel": "لټون"
}
......@@ -40,5 +40,6 @@
"drawerLabel": "Menu de navegação",
"popupMenuLabel": "Menu pop-up",
"dialogLabel": "Caixa de diálogo",
"alertDialogLabel": "Alerta"
"alertDialogLabel": "Alerta",
"searchFieldLabel": "Pesquisa"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Menu de navegação",
"popupMenuLabel": "Menu pop-up",
"dialogLabel": "Caixa de diálogo",
"alertDialogLabel": "Alerta"
"alertDialogLabel": "Alerta",
"searchFieldLabel": "Pesquisa"
}
......@@ -40,5 +40,6 @@
"drawerLabel": "Meniu de navigare",
"popupMenuLabel": "Meniu pop-up",
"dialogLabel": "Casetă de dialog",
"alertDialogLabel": "Alerta"
"alertDialogLabel": "Alerta",
"searchFieldLabel": "Căutare"
}
......@@ -41,5 +41,6 @@
"drawerLabel": "Меню навигации",
"popupMenuLabel": "Всплывающее меню",
"dialogLabel": "Диалоговое окно",
"alertDialogLabel": "бдительный"
"alertDialogLabel": "бдительный",
"searchFieldLabel": "Поиск"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "เมนูการนำทาง",
"popupMenuLabel": "เมนูป๊อปอัป",
"dialogLabel": "กล่องโต้ตอบ",
"alertDialogLabel": "เตือนภัย"
"alertDialogLabel": "เตือนภัย",
"searchFieldLabel": "ค้นหา"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Gezinme menüsü",
"popupMenuLabel": "Popup menü",
"dialogLabel": "İletişim kutusu",
"alertDialogLabel": "Alarm"
"alertDialogLabel": "Alarm",
"searchFieldLabel": "Arama"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "نیویگیشن مینو",
"popupMenuLabel": "پاپ اپ مینو",
"dialogLabel": "ڈائیلاگ",
"alertDialogLabel": "انتباہ"
"alertDialogLabel": "انتباہ",
"searchFieldLabel": "تلاش کریں"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "Menu di chuyển",
"popupMenuLabel": "Menu bật lên",
"dialogLabel": "Hộp thoại",
"alertDialogLabel": "Hộp thoại"
"alertDialogLabel": "Hộp thoại",
"searchFieldLabel": "Tìm kiếm"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "导航菜单",
"popupMenuLabel": "弹出菜单",
"dialogLabel": "对话框",
"alertDialogLabel": "警报"
"alertDialogLabel": "警报",
"searchFieldLabel": "搜索"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "導覽選單",
"popupMenuLabel": "彈出式選單",
"dialogLabel": "對話方塊",
"alertDialogLabel": "警报"
"alertDialogLabel": "警报",
"searchFieldLabel": "搜索"
}
......@@ -38,5 +38,6 @@
"drawerLabel": "導覽選單",
"popupMenuLabel": "彈出式選單",
"dialogLabel": "對話方塊",
"alertDialogLabel": "警报"
"alertDialogLabel": "警报",
"searchFieldLabel": "搜索"
}
......@@ -16,7 +16,7 @@ import 'widgets_localizations.dart';
// Watch out: the supported locales list in the doc comment below must be kept
// in sync with the list we test, see test/translations_test.dart, and of course
// the acutal list of supported locales in _MaterialLocalizationsDelegate.
// the actual list of supported locales in _MaterialLocalizationsDelegate.
/// Localized strings for the material widgets.
///
......@@ -268,6 +268,9 @@ class GlobalMaterialLocalizations implements MaterialLocalizations {
@override
String get alertDialogLabel => _translationBundle.alertDialogLabel;
@override
String get searchFieldLabel => _translationBundle.searchFieldLabel;
@override
String aboutListTileTitle(String applicationName) {
final String text = _translationBundle.aboutListTileTitle;
......
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