gpt4 book ai didi

flutter test enterText on widget 扩展 EditableText "Bad state: No element": building editable text for mention

转载 作者:行者123 更新时间:2023-12-03 03:34:40 25 4
gpt4 key购买 nike

我有一个扩展 EditableText 的类,它提供样式编辑 - 颜色跨度等。

父小部件有一个 bool 标志,用于使用默认 TextInput 或扩展 EditableText 的自定义输入。

默认的测试工作正常:

final String dummyDesc = 'dummy desc';
final Finder mention = find.byType(Mention);
await tester.enterText(mention, dummyDesc);

但是,如果我在 Mention 使用自定义输入的页面上执行相同的操作,测试将失败,因为它找不到 TextInput - 因为根本没有。

错误:

错误状态:没有元素

如何在扩展了 EditableText 的小部件上使用 enterText?或者类似的东西?

最佳答案

这似乎是由于 enterText 内部调用的 showKeyboard 方法造成的:https://github.com/flutter/flutter/blob/3b067049adc14ffb300e78d9b0d0adf3d581de7c/packages/flutter_test/lib/src/widget_tester.dart#L854

它正在检查查找器是否匹配 EditableText 或者它是 EditableText 的后代,它根据 runtimeType 进行匹配。

这有点 hacky,但您可以提供一个 runtimeType getter,它返回 EditableText 并允许它工作。

class Mention extends EditableText {
// ...

Type get runtimeType => EditableText;

// ...
}

警告:这意味着您将无法再find.byType(Mention)。您可以通过编写自定义查找器或使用谓词查找器来解决此问题 find.byElementPredicate((Element element) => element.widget is Mention)

关于flutter test enterText on widget 扩展 EditableText "Bad state: No element": building editable text for mention,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61760197/

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