Flutter:测试时如何正确获取 RichText 数据?

Posted

技术标签:

【中文标题】Flutter:测试时如何正确获取 RichText 数据?【英文标题】:Flutter: How to get properly RichText data when testing? 【发布时间】:2021-04-29 07:54:15 【问题描述】:

我目前正在编写 测试,以验证 inside RichText 的值是否有效。

这是我需要测试的小部件:

RichText(
  key: ValueKey('RichTextKey'),
  text: TextSpan(
    text: 'Part 1 - ',
    children: [
      TextSpan(text: 'Part 2'),
    ],
  ),
);

所以目前我找到了一种方法,但它似乎已被弃用:/

这是我现在的测试方式(已弃用):

final richText0Finder = find.byKey(
  ValueKey('RichTextKey'),
);

final richText0Widget = tester.element(richText0Finder).widget as RichText;

// second ".text" is deprecated here :/
expect(richText0Widget.text.text, 'Part 1 - ');

// no problem with TextSpan inside RichText, the first element is not the one inside RichText...
final textSpan0 = richText0Widget.text.children.last as TextSpan;
expect(textSpan0.text, 'Part 2');

不推荐使用的说:

'text' is deprecated and shouldn't be used. InlineSpan does not innately have text. Use TextSpan.text instead. This feature was deprecated after v1.7.3..
Try replacing the use of the deprecated member with the replacement.

但我不知道如何在 RichText 小部件中获取 InlineSpan 数据?

任何帮助都会很棒 :) , 谢谢!

【问题讨论】:

【参考方案1】:

所以我找到了解决方案,只需将richText0Widget.text 包装为TextSpan 小部件:

expect((richText0Widget.text as TextSpan).text, 'Part 1 - ');

希望它能好:)

【讨论】:

以上是关于Flutter:测试时如何正确获取 RichText 数据?的主要内容,如果未能解决你的问题,请参考以下文章

错误 Dart/Flutter: 'context != null': 不正确

如何在 Flutter 小部件中测试回调函数

Flutter 错误 - 断言失败:第 213 行 pos 15:'data != null':在从 firestore 获取数据时不正确

Flutter:如何正确实现 FlutterError.OnError

flutter 如何实现文件读写(使用篇)

在 Flutter 测试中获取小部件的位置?