Flutter TabBar单个Tab如何添加Tooltip悬浮提示,解决类型不匹配报错
Flutter TabBar 单个Tab添加Tooltip提示解决方案
错误原因
你遇到的类型报错核心是声明的tabs列表类型为List<Tab>,而外层嵌套Tooltip后插入列表的元素类型为Tooltip,和声明的列表类型不匹配导致赋值失败。
可用方案有两种:
方案1:修改列表声明类型(改造成本最低)
TabBar的tabs参数本身支持传入List<Widget>类型,不需要严格限制为Tab组件,你只需要把原有tabs的声明从List<Tab> tabs = []修改为List<Widget> tabs = [],你尝试的嵌套代码就可以正常运行:
for (var i = 0; i < options.length; i++) { String tabTitle = options[i].text; tabs.add( Tooltip( message: tabTitle, child: Tab(text: tabTitle), ), ); }
方案2:Tooltip嵌入Tab的child属性(保留Tab类型声明)
如果你不想修改原有列表的List<Tab>类型声明,可以放弃使用Tab的text命名参数,改为通过child参数传入带Tooltip的文本组件:
for (var i = 0; i < options.length; i++) { String tabTitle = options[i].text; tabs.add( Tab( child: Tooltip( message: tabTitle, child: Text(tabTitle), ), ), ); }
补充说明
如果需要优化体验,仅在Tab文本被截断时才显示Tooltip,可以通过TextPainter预先计算文本宽度和Tab可用宽度的差值,仅在文本溢出时添加message参数即可。
内容的提问来源于stack exchange,提问作者Turkey
相关产品推荐
相关产品推荐

