如何从WidgetTester获取BuildContext?

14

在进行Flutter小部件测试时,如果我至少知道树中一个小部件的某些信息,就可以从WidgetTester获取上下文。例如,如果我知道测试小部件树中有一个Text小部件,我可以

BuildContext context = tester.element(find.byType(Text));

如何获取更一般的上下文?例如,我能否获取树的根部件并获取其BuildContext

1个回答

4
声明一个使用navigatorKey的导航键。
GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();

将此navigatorKey分配给您的测试类中的材料应用小部件。
await tester.pumpWidget(
  MaterialApp(
    home: const Scaffold(),
    navigatorKey: navigatorKey,
  ),
);

然后,您将能够使用navigatorKey.currentContext访问其上下文。
请注意,在树中必须有一个小部件(在本例中为Scaffold),否则navigatorKey.currentContext将为null

我对这个答案不太满意:它基本上就是问题中已经建议的那样,从UI-Widget的某个部分获取buildContext。难道没有更简洁的方法吗?一种不需要我们修改UI/Widget的方法? - undefined
我认为问题中的答案在大多数情况下比实际答案更好。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接