在 SearchDelegate Flutter 中更改 searchFieldLabel 的字体样式
Posted
技术标签:
【中文标题】在 SearchDelegate Flutter 中更改 searchFieldLabel 的字体样式【英文标题】:Change font style of searchFieldLabel in SearchDelegate Flutter 【发布时间】:2020-05-17 16:20:37 【问题描述】:我使用 Material 的 SearchDelegate 实现了一个 SearchAppBar,并使用来自 this question 的响应更改了 Search Delegate 的默认提示文本。
但是,我遇到了无法更改搜索字段中提示文本的字体样式的问题,如下图所示:
我已经有了想要实现的样式,并且正在我的应用程序的其他字体中使用这种样式,但我也想将此样式应用于此提示文本,以免违反应用程序的样式指南。
我用于更改 Search Delegate 的默认消息的代码:
class SearchRoomAppBar extends SearchDelegate
SearchRoomAppBar() : super(
searchFieldLabel: "Search user",
keyboardType: TextInputType.text,
textInputAction: TextInputAction.search,
);
【问题讨论】:
【参考方案1】:您可以覆盖 SearchDelegate appBarTheme 方法:
@override
ThemeData appBarTheme(BuildContext context)
assert(context != null);
final ThemeData theme = Theme.of(context);
assert(theme != null);
return theme;
https://dartpad.dartlang.org/69724799fd6653ea4cf650a5a758c3d1
【讨论】:
【参考方案2】:SearchDelegate
应用栏文本的样式设置为 ThemeData.textTheme.headline6
的任何样式。
默认情况下,SearchDelegate
使用您应用的 ThemeData
,但您可以覆盖 ThemeData appBarTheme(BuildContext context)
方法以返回自定义版本。
@override
ThemeData appBarTheme(BuildContext context)
// You can use Theme.of(context) directly too
var superThemeData = super.appBarTheme(context);
return superThemeData.copyWith(
textTheme: superThemeData.textTheme.copyWith(
headline6: /* Whatever style you want to apply to your text */,
),
);
【讨论】:
以上是关于在 SearchDelegate Flutter 中更改 searchFieldLabel 的字体样式的主要内容,如果未能解决你的问题,请参考以下文章
Flutter 将搜索数据传递给 SearchDelegate
Flutter SearchDelegate:如何去除文本下方的文本下划线和蓝线(颜色)?
如何在 SearchDelegate 的 buildResults 中传递更新 UI 值?