Flutter:测试时如何正确获取RichText数据?
Flutter: How to get properly RichText data when testing?
我目前正在编写 test 以验证 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
数据?
任何帮助都会很棒 :) ,
谢谢!
所以我找到了解决方案,只需要将 richText0Widget.text
包装为 TextSpan
小部件即可:
expect((richText0Widget.text as TextSpan).text, 'Part 1 - ');
希望可以顺利:)
我目前正在编写 test 以验证 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
数据?
任何帮助都会很棒 :) , 谢谢!
所以我找到了解决方案,只需要将 richText0Widget.text
包装为 TextSpan
小部件即可:
expect((richText0Widget.text as TextSpan).text, 'Part 1 - ');
希望可以顺利:)