通过创建自己的
DefaultMaterialLocalizations类并将其传递到
MaterialApp小部件中,可以解决此问题:
void main() => runApp(SearchApp());class SearchApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( localizationsDelegates: [ CustomLocalizationDelegate(), ], home: Scaffold( appBar: AppBar( title: Text('Search demo'), ), body: Center( child: Builder( builder: (context) => MaterialButton( child: Text('Search'), onPressed: () => showSearch( context: context, delegate: DummyDelegate(), ), ), ), ), ), ); }}class DummyDelegate extends SearchDelegate<String> { @override List<Widget> buildActions(BuildContext context) => []; @override Widget buildLeading(BuildContext context) => IconButton( icon: Icon(Icons.close), onPressed: () => Navigator.of(context).pop(), ); @override Widget buildResults(BuildContext context) => Text('Result'); @override Widget buildSuggestions(BuildContext context) => Text('Suggestion');}class CustomLocalizationDelegate extends LocalizationsDelegate<MaterialLocalizations> { const CustomLocalizationDelegate(); @override bool isSupported(Locale locale) => locale.languageCode == 'en'; @override Future<MaterialLocalizations> load(Locale locale) => SynchronousFuture<MaterialLocalizations>(const CustomLocalization()); @override bool shouldReload(CustomLocalizationDelegate old) => false; @override String toString() => 'CustomLocalization.delegate(en_US)';}class CustomLocalization extends DefaultMaterialLocalizations { const CustomLocalization(); @override String get searchFieldLabel => "My hint text";}


