Flutter不会读取提示文本



我目前正在为SignUpPage编写一个测试。我在测试中做的第一件事就是:

await tester.enterText(find.text('Enter First Name'), 'Jimmy');

然而,"输入名字"文本实际上是填充小部件中的提示文本:

Padding(
padding:
const EdgeInsets.symmetric(horizontal: 200, vertical: 16),
child: TextFormField(
decoration: const InputDecoration(
border: OutlineInputBorder(),
hintText: 'Enter First Name'),
controller: firstNameController,
),
)

我希望能够在找到"输入名字"提示文本时输入文本。我该怎么做?

我尝试使用find类中的所有其他find函数。他们都不适合我。

我认为按提示文本搜索文本字段不是一个好主意,例如,一旦更新了提示文本或对其应用了翻译,您的测试可能会中断。我建议使用以下方法之一:

  1. TextFormField分配一个密钥并按其进行搜索:
Padding(
padding: const EdgeInsets.symmetric(
horizontal: 200,
vertical: 16,
),
child: TextFormField(
key: const Key('firstNameTextFormField'),
decoration: const InputDecoration(
border: OutlineInputBorder(),
hintText: 'Enter First Name',
controller: firstNameController,
),
),
);
// Then in your tests
await tester.enterText(find.byKey('firstNameTextFormField'), 'Jimmy');
  1. 按类型搜索您的TextFormField(如果您测试的Widget中提供了一个文本字段:
Padding(
padding: const EdgeInsets.symmetric(
horizontal: 200,
vertical: 16,
),
child: TextFormField(
decoration: const InputDecoration(
border: OutlineInputBorder(),
hintText: 'Enter First Name',
controller: firstNameController,
),
),
);
// Then in your tests
await tester.enterText(find.byType(TextFormField), 'Jimmy');

最新更新