gpt4 book ai didi

testing - Flutter - 如何在小部件测试中获取文本小部件

转载 作者:IT王子 更新时间:2023-10-29 06:37:02 24 4
gpt4 key购买 nike

我正在尝试在 Flutter 中创建一个简单的小部件测试。我有一个自定义小部件,它接收一些值,组成一个字符串并显示带有该字符串的文本。我必须创建小部件并且它可以工作,但是我无法读取 Text 组件的值来断言生成的文本是正确的。

我创建了一个简单的测试来说明这个问题。我想获取文本值,即“文本”。我尝试了几种方法,如果我得到查找器 asString() 我可以解释字符串以获取值,但我认为这不是一个好的解决方案。我想将组件作为文本读取,以便我可以访问所有属性。

那么,我将如何读取文本小部件以便访问数据属性?

import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';

void main() {
testWidgets('my first widget test', (WidgetTester tester) async {

await tester
.pumpWidget(MaterialApp(home: Text("text", key: Key('unit_text'))));

// This works and prints: (Text-[<'unit_text'>]("text"))
var finder = find.byKey(Key("unit_text"));
print(finder.evaluate().first);

// This also works and prints: (Text-[<'unit_text'>]("text"))
var finderByType = find.byType(Text);
print(finderByType.evaluate().first);

// This returns empty
print(finder.first.evaluate().whereType<Text>());

// This throws: type 'StatelessElement' is not a subtype of type 'Text' in type cast
print(finder.first.evaluate().cast<Text>().first);

});
}

最佳答案

我成功了。我必须访问元素的小部件属性,然后将其转换为文本:

var text = finder.evaluate().single.widget as Text;
print(text.data);

关于testing - Flutter - 如何在小部件测试中获取文本小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54235752/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com