Flutter:如何修改Android长按TextField弹出的系统tooltip背景颜色
Android平台TextField长按弹出tooltip背景色修改方案
你之前修改的TooltipTheme、canvasColor、popUpMenu.color均不生效的原因是:长按TextField弹出的文本选择工具栏不属于普通Tooltip组件样式管辖范围,需要针对文本选择相关的主题配置做修改,以下是对应场景的解决方案:

Flutter框架场景
使用Material2规范
直接在全局或局部Theme的textSelectionTheme中配置selectionToolbarColor属性即可修改背景色:
ThemeData( textSelectionTheme: TextSelectionThemeData( selectionToolbarColor: Colors.yellow, // 自定义工具栏背景色 selectionColor: Colors.blue.withOpacity(0.3), // 可选:修改选中文本高亮色 selectionHandleColor: Colors.blue, // 可选:修改文本选择手柄颜色 ), )
使用Material3规范
Material3版本中文本选择工具栏的样式归属MenuTheme管辖,配置方式如下:
ThemeData( useMaterial3: true, menuTheme: MenuThemeData( style: MenuStyle( backgroundColor: MaterialStateProperty.all(Colors.yellow), // 自定义工具栏背景色 shape: MaterialStateProperty.all(RoundedRectangleBorder(borderRadius: BorderRadius.circular(8))), // 可选:修改圆角 ), ), )
自定义样式兜底方案
如果上述全局配置仍不生效,可以直接给TextField配置contextMenuBuilder完全自定义弹出菜单的样式,不受默认主题限制:
TextField( contextMenuBuilder: (context, editableTextState) { return Container( decoration: BoxDecoration( color: Colors.yellow, // 自定义背景色 borderRadius: BorderRadius.circular(8), boxShadow: const [BoxShadow(color: Colors.black12, blurRadius: 4)] ), child: AdaptiveTextSelectionToolbar.buttonItems( anchors: editableTextState.contextMenuAnchors, buttonItems: editableTextState.contextMenuButtonItems, ), ); }, )
内容的提问来源于stack exchange,提问作者Zhu
相关产品推荐
相关产品推荐

