例如,我可能在当前小部件树中有一个**RichText
**,它看起来像
RichText(
text: TextSpan(
text: 'Hello ',
style: DefaultTextStyle.of(context).style,
children: <TextSpan>[
TextSpan(text: 'bold', style: TextStyle(fontWeight: FontWeight.bold)),
TextSpan(text: ' world!'),
],
),
)
我尝试使用find.text('Hello bold world!')
,但它不工作,因为它不是一个文本。
5条答案
按热度按时间tp5buhyn1#
框架解决方案
我最近把contributed这个特性移植到Flutter框架中,到内置的搜索器
find.text()
您现在可以启用
findRichText
参数,然后也会找到独立的RichText
小部件:vc6uscn92#
最简单的解决方案是在RichText上放置一个键,并以这种方式读取它。
如果出于某种原因这不是一个很好的方法,您可以使用find.byWidgetPredicate并传递一个匹配RichText小部件的函数,其text.toPlainText()返回您想要的字符串。
uplii1fm3#
这是find.byWidgetPredicate调用。
下面是fromRichTextToPlainText辅助函数。将RichText小部件传递给它,它将返回纯文本。
i34xakig4#
我通过更手动地深入小部件来解决这个问题
对于子级,我可以Assert它们是按预期生成的
8oomwypt5#
您可以通过像这样启用
findRichText: true
来简单地实现这一点,