如何从 WidgetTester 获取 BuildContext?

but*_*oys 15 flutter-test

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

BuildContext context = tester.element(find.byType(Text));
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得更普遍的背景?例如,我可以获取树的根小部件并获取它的BuildContext吗?

小智 4

声明一个navigatorKey使用

GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
Run Code Online (Sandbox Code Playgroud)

将其分配navigatorKey给测试类中的材料应用程序小部件。

await tester.pumpWidget(
  MaterialApp(
    home: const Scaffold(),
    navigatorKey: navigatorKey,
  ),
);
Run Code Online (Sandbox Code Playgroud)

然后您将能够使用 访问其上下文navigatorKey.currentContext

请注意,树中必须有一个小部件(在本例中为 a Scaffold),否则navigatorKey.currentContext将为null