Added missing cupertino search text field demo. (#708)
* Added cupertino search text field demo.
* fix
* Update lib/l10n/intl_en.arb
* Update lib/l10n/intl_en.arb
* flutter pub run grinder l10n
* Update intl_en_US.xml
* update code segments
* format
Co-authored-by: Pierre-Louis Guidez <plg@google.com>
Co-authored-by: Pierre-Louis <6655696+guidezpl@users.noreply.github.com>
diff --git a/lib/codeviewer/code_segments.dart b/lib/codeviewer/code_segments.dart
index 2e6b775..3ef5ae7 100644
--- a/lib/codeviewer/code_segments.dart
+++ b/lib/codeviewer/code_segments.dart
@@ -14193,6 +14193,541 @@
]);
}
+ static TextSpan cupertinoSearchTextFieldDemo(BuildContext context) {
+ final codeStyle = CodeStyle.of(context);
+ return TextSpan(children: [
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text: '// Copyright 2019 The Flutter team. All rights reserved.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle,
+ text:
+ '// Use of this source code is governed by a BSD-style license that can be'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(
+ style: codeStyle.commentStyle, text: '// found in the LICENSE file.'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:flutter/cupertino.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text: '\u0027package:flutter/material.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'import'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle,
+ text:
+ '\u0027package:flutter_gen/gen_l10n/gallery_localizations.dart\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.classStyle, text: 'CupertinoSearchTextFieldDemo'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'StatefulWidget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.classStyle, text: 'CupertinoSearchTextFieldDemo'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '({'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'super'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'key'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '});'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'State'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(
+ style: codeStyle.classStyle, text: 'CupertinoSearchTextFieldDemo'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' createState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '=>'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(
+ style: codeStyle.classStyle,
+ text: '_CupertinoSearchTextFieldDemoState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '();'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ TextSpan(style: codeStyle.keywordStyle, text: 'class'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.classStyle,
+ text: '_CupertinoSearchTextFieldDemoState'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'extends'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'State'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(
+ style: codeStyle.classStyle, text: 'CupertinoSearchTextFieldDemo'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'List'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' platforms '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027Android\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027iOS\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027Windows\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027Linux\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027MacOS\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027Web\u0027'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '];'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextEditingController'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _queryTextController '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'TextEditingController'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '();'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _searchPlatform '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'List'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' filteredPlatforms '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '[];'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'void'),
+ TextSpan(style: codeStyle.baseStyle, text: ' initState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'super'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'initState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '();'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a filteredPlatforms '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' platforms'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a _queryTextController'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'addListener'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'if'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '_queryTextController'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'isEmpty'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a setState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a _searchPlatform '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.stringStyle, text: '\u0027\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a filteredPlatforms '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' platforms'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '});'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'else'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a setState'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a _searchPlatform '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' _queryTextController'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '});'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '});'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: '@override'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' build'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.classStyle, text: 'BuildContext'),
+ TextSpan(style: codeStyle.baseStyle, text: ' context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'final'),
+ TextSpan(style: codeStyle.baseStyle, text: ' localizations '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'GalleryLocalizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'of'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')!;'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoPageScaffold'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a navigationBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoNavigationBar'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a automaticallyImplyLeading'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'false'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a middle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'localizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: 'demoCupertinoSearchTextFieldTitle'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'SafeArea'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a child'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Column'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a children'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoSearchTextField'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a controller'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _queryTextController'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a restorationId'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(
+ style: codeStyle.stringStyle, text: '\u0027search_text_field\u0027'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a padding'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'EdgeInsets'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'symmetric'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'horizontal'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '6'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' vertical'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '12'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a decoration'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'const'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'BoxDecoration'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a border'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Border'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a bottom'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'BorderSide'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a width'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '0'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a color'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'CupertinoColors'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'inactiveGray'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a placeholder'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a localizations'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: 'demoCupertinoSearchTextFieldPlaceholder'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(
+ style: codeStyle.baseStyle,
+ text: '\u000a _buildPlatformList'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '(),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '],'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '),'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'Widget'),
+ TextSpan(style: codeStyle.baseStyle, text: ' _buildPlatformList'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'if'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '_searchPlatform'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'isNotEmpty'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.classStyle, text: 'List'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.classStyle, text: 'String'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '>'),
+ TextSpan(style: codeStyle.baseStyle, text: ' tempList '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '[];'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'for'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.keywordStyle, text: 'int'),
+ TextSpan(style: codeStyle.baseStyle, text: ' i '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.numberStyle, text: '0'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: ' i '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '<'),
+ TextSpan(style: codeStyle.baseStyle, text: ' filteredPlatforms'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'length'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: ' i'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '++)'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'if'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'filteredPlatforms'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: 'i'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ']'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'toLowerCase'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'contains'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '_searchPlatform'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'toLowerCase'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '()))'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a tempList'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'add'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'filteredPlatforms'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: 'i'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ']);'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(
+ style: codeStyle.baseStyle, text: '\u000a filteredPlatforms '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '='),
+ TextSpan(style: codeStyle.baseStyle, text: ' tempList'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ';'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'ListView'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'builder'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a itemCount'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' filteredPlatforms'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '.'),
+ TextSpan(style: codeStyle.baseStyle, text: 'length'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a shrinkWrap'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'true'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a itemBuilder'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'context'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ','),
+ TextSpan(style: codeStyle.baseStyle, text: ' index'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ')'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '{'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.keywordStyle, text: 'return'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'ListTile'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'title'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ':'),
+ TextSpan(style: codeStyle.baseStyle, text: ' '),
+ TextSpan(style: codeStyle.classStyle, text: 'Text'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '('),
+ TextSpan(style: codeStyle.baseStyle, text: 'filteredPlatforms'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '['),
+ TextSpan(style: codeStyle.baseStyle, text: 'index'),
+ TextSpan(style: codeStyle.punctuationStyle, text: ']));'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '},'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: ');'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a '),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a'),
+ TextSpan(style: codeStyle.punctuationStyle, text: '}'),
+ TextSpan(style: codeStyle.baseStyle, text: '\u000a\u000a'),
+ ]);
+ }
+
static TextSpan cupertinoSegmentedControlDemo(BuildContext context) {
final codeStyle = CodeStyle.of(context);
return TextSpan(children: [
diff --git a/lib/data/demos.dart b/lib/data/demos.dart
index dce7510..0ef062c 100644
--- a/lib/data/demos.dart
+++ b/lib/data/demos.dart
@@ -1214,6 +1214,26 @@
],
category: GalleryDemoCategory.cupertino,
),
+ GalleryDemo(
+ title: localizations.demoCupertinoSearchTextFieldTitle,
+ icon: GalleryIcons.search,
+ slug: 'cupertino-search-text-field',
+ subtitle: localizations.demoCupertinoSearchTextFieldSubtitle,
+ configurations: [
+ GalleryDemoConfiguration(
+ title: localizations.demoCupertinoSearchTextFieldTitle,
+ description: localizations.demoCupertinoSearchTextFieldDescription,
+ documentationUrl:
+ '$_docsBaseUrl/cupertino/CupertinoSearchTextField-class.html',
+ buildRoute: (_) => DeferredWidget(
+ cupertinoLoader,
+ // ignore: prefer_const_constructors
+ () => cupertino_demos.CupertinoSearchTextFieldDemo()),
+ code: CodeSegments.cupertinoTextFieldDemo,
+ ),
+ ],
+ category: GalleryDemoCategory.cupertino,
+ ),
];
}
diff --git a/lib/data/icons.dart b/lib/data/icons.dart
index ddf198f..aee1193 100644
--- a/lib/data/icons.dart
+++ b/lib/data/icons.dart
@@ -170,4 +170,5 @@
static const IconData navigationRail = Icons.vertical_split;
static const IconData appbar = Icons.web_asset;
static const IconData divider = Icons.credit_card;
+ static const IconData search = Icons.search;
}
diff --git a/lib/demos/cupertino/cupertino_demos.dart b/lib/demos/cupertino/cupertino_demos.dart
index e50feeb..adfe8a6 100644
--- a/lib/demos/cupertino/cupertino_demos.dart
+++ b/lib/demos/cupertino/cupertino_demos.dart
@@ -4,6 +4,7 @@
export 'package:gallery/demos/cupertino/cupertino_context_menu_demo.dart';
export 'package:gallery/demos/cupertino/cupertino_navigation_bar_demo.dart';
export 'package:gallery/demos/cupertino/cupertino_picker_demo.dart';
+export 'package:gallery/demos/cupertino/cupertino_search_text_field_demo.dart';
export 'package:gallery/demos/cupertino/cupertino_segmented_control_demo.dart';
export 'package:gallery/demos/cupertino/cupertino_slider_demo.dart';
export 'package:gallery/demos/cupertino/cupertino_switch_demo.dart';
diff --git a/lib/demos/cupertino/cupertino_search_text_field_demo.dart b/lib/demos/cupertino/cupertino_search_text_field_demo.dart
new file mode 100644
index 0000000..e6a0fdd
--- /dev/null
+++ b/lib/demos/cupertino/cupertino_search_text_field_demo.dart
@@ -0,0 +1,107 @@
+// Copyright 2019 The Flutter team. 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/cupertino.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_gen/gen_l10n/gallery_localizations.dart';
+
+// BEGIN cupertinoSearchTextFieldDemo
+
+class CupertinoSearchTextFieldDemo extends StatefulWidget {
+ const CupertinoSearchTextFieldDemo({super.key});
+
+ @override
+ State<CupertinoSearchTextFieldDemo> createState() =>
+ _CupertinoSearchTextFieldDemoState();
+}
+
+class _CupertinoSearchTextFieldDemoState
+ extends State<CupertinoSearchTextFieldDemo> {
+ final List<String> platforms = [
+ 'Android',
+ 'iOS',
+ 'Windows',
+ 'Linux',
+ 'MacOS',
+ 'Web'
+ ];
+
+ final TextEditingController _queryTextController = TextEditingController();
+ String _searchPlatform = '';
+ List<String> filteredPlatforms = [];
+
+ @override
+ void initState() {
+ super.initState();
+ filteredPlatforms = platforms;
+ _queryTextController.addListener(() {
+ if (_queryTextController.text.isEmpty) {
+ setState(() {
+ _searchPlatform = '';
+ filteredPlatforms = platforms;
+ });
+ } else {
+ setState(() {
+ _searchPlatform = _queryTextController.text;
+ });
+ }
+ });
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ final localizations = GalleryLocalizations.of(context)!;
+ return CupertinoPageScaffold(
+ navigationBar: CupertinoNavigationBar(
+ automaticallyImplyLeading: false,
+ middle: Text(localizations.demoCupertinoSearchTextFieldTitle),
+ ),
+ child: SafeArea(
+ child: Column(
+ children: [
+ CupertinoSearchTextField(
+ controller: _queryTextController,
+ restorationId: 'search_text_field',
+ padding: const EdgeInsets.symmetric(horizontal: 6, vertical: 12),
+ decoration: const BoxDecoration(
+ border: Border(
+ bottom: BorderSide(
+ width: 0,
+ color: CupertinoColors.inactiveGray,
+ ),
+ ),
+ ),
+ placeholder:
+ localizations.demoCupertinoSearchTextFieldPlaceholder,
+ ),
+ _buildPlatformList(),
+ ],
+ ),
+ ),
+ );
+ }
+
+ Widget _buildPlatformList() {
+ if (_searchPlatform.isNotEmpty) {
+ List<String> tempList = [];
+ for (int i = 0; i < filteredPlatforms.length; i++) {
+ if (filteredPlatforms[i]
+ .toLowerCase()
+ .contains(_searchPlatform.toLowerCase())) {
+ tempList.add(filteredPlatforms[i]);
+ }
+ }
+ filteredPlatforms = tempList;
+ }
+ return ListView.builder(
+ itemCount: filteredPlatforms.length,
+ shrinkWrap: true,
+ itemBuilder: (context, index) {
+ return ListTile(title: Text(filteredPlatforms[index]));
+ },
+ );
+ }
+}
+
+// END
diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb
index 68f8d7c..037d09d 100644
--- a/lib/l10n/intl_en.arb
+++ b/lib/l10n/intl_en.arb
@@ -1407,6 +1407,22 @@
"@demoCupertinoTextFieldPIN": {
"description": "The placeholder for a text field where a user would enter their PIN number."
},
+ "demoCupertinoSearchTextFieldTitle": "Search text field",
+ "@demoCupertinoSearchTextFieldTitle": {
+ "description": "Title for the cupertino search text field demo."
+ },
+ "demoCupertinoSearchTextFieldSubtitle": "iOS-style search text field",
+ "@demoCupertinoSearchTextFieldSubtitle": {
+ "description": "Subtitle for the cupertino search text field demo."
+ },
+ "demoCupertinoSearchTextFieldDescription": "A search text field that lets the user search by entering text, and that can offer and filter suggestions.",
+ "@demoCupertinoSearchTextFieldDescription": {
+ "description": "Description for the cupertino search text field demo."
+ },
+ "demoCupertinoSearchTextFieldPlaceholder": "Enter some text",
+ "@demoCupertinoSearchTextFieldPlaceholder": {
+ "description": "The placeholder for a search text field demo."
+ },
"demoMotionTitle": "Motion",
"@demoMotionTitle": {
"description": "Title for the motion demo."
diff --git a/lib/l10n/intl_en_US.xml b/lib/l10n/intl_en_US.xml
index 1a1b92d..2a8df90 100644
--- a/lib/l10n/intl_en_US.xml
+++ b/lib/l10n/intl_en_US.xml
@@ -1298,6 +1298,22 @@
description="The placeholder for a text field where a user would enter their PIN number."
>PIN</string>
<string
+ name="demoCupertinoSearchTextFieldTitle"
+ description="Title for the cupertino search text field demo."
+ >Search text field</string>
+ <string
+ name="demoCupertinoSearchTextFieldSubtitle"
+ description="Subtitle for the cupertino search text field demo."
+ >iOS-style search text field</string>
+ <string
+ name="demoCupertinoSearchTextFieldDescription"
+ description="Description for the cupertino search text field demo."
+ >A search text field that lets the user search by entering text, and that can offer and filter suggestions.</string>
+ <string
+ name="demoCupertinoSearchTextFieldPlaceholder"
+ description="The placeholder for a search text field demo."
+ >Enter some text</string>
+ <string
name="demoMotionTitle"
description="Title for the motion demo."
>Motion</string>