Flutter窗口小部件测试:如果窗口小部件具有以下项,则find.byKey不起作用:GlobalKey(debugLabel:“ gridView”)

时间:2019-05-10 14:05:39

标签: flutter

如果我对某些小部件使用GlobalKey

final gridBuilder = GridView.builder(
      itemCount: movies.length,
      key: GlobalKey(debugLabel: "gridView"),

调用时无法访问GridView

find.byKey(Key('gridView'));

find.byKey(GlobalKey(debugLabel: "gridView"));

除了按类型或文本查找以外,是否有其他解决方案?

2 个答案:

答案 0 :(得分:0)

我在这里遇到了同样的问题,您找到一种解决问题的方法了吗?

除了将\包装在GlobalKey中并赋予其Container之外,没有其他方法可以将Key保留在小部件上:

final Container gridBuilder = Container(
  key: Key('gridView'),
  child: GridView.builder(
    itemCount: movies.length,
    key: GlobalKey(),
  ),
);

然后在测试中,您可以通过以下方式访问GridView

find.descendant(of: find.byKey(Key('gridView')), matching: find.byType(GridView));

答案 1 :(得分:0)

我遇到了完全相同的问题。 @jordan LL解决方案非常完美!!!作为一种解决方法,我使用了遵循策略: 而是使用: var key1 = find.byKey(ValueKey(key'$OVERVIEW_GRID_ITEM_FAVORITE_BUTTON_KEY\_0'));

我使用以下方法工作: var key1 = find.descendant( of: find.byKey(Key('$OVERVIEW_GRID_ITEM_FAVORITE_BUTTON_KEY\_0')), matching: find.byType(OverviewGridItem));