Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 在颤振测试中,是否可以从给定的小部件访问子部件/父部件?_Dart_Flutter_Flutter Test - Fatal编程技术网

Dart 在颤振测试中,是否可以从给定的小部件访问子部件/父部件?

Dart 在颤振测试中,是否可以从给定的小部件访问子部件/父部件?,dart,flutter,flutter-test,Dart,Flutter,Flutter Test,我正在为颤振编写单元和集成测试。是否可以从给定的小部件访问子部件/父部件?是的,您可以使用和 示例: // Finds a RichText widget that a descendant (child/grand-child/etc) of a // tab widget with text "Tab 1" find.descendant(of: find.text('Tab 1'), matching: find.byType(RichText)); // Finds a parent

我正在为颤振编写单元和集成测试。是否可以从给定的小部件访问子部件/父部件?

是的,您可以使用和

示例:

// Finds a RichText widget that a descendant (child/grand-child/etc) of a
// tab widget with text "Tab 1"
find.descendant(of: find.text('Tab 1'), matching: find.byType(RichText));

// Finds a parent widget of type MyParentWidget.
tester.element(find.byType(MyChildWidget))
  .ancestorWidgetOfExactType(MyParentWidget);

不推荐使用ancestorWidgetOfExactType,首选使用

颤振文档-&

// Parent with a child & grand child
class ParentWidget extends StatelessWidget {
  
  @override
  Widget build(BuildContext context) {
    return ChildWidget(
      child: GrandChildWidget(),
    );
  }
}

// Tests
void main() {
  testWidgets('parent, child & grand-child hierarchy', (WidgetTester tester) async {
    Widget parentWidget = ParentWidget();
    await tester.pumpWidget(parentWidget);
    
    final childFinder = find.descendant(of: find.byWidget(parentWidget), matching: find.byType(ChildWidget));
    expect(childFinder, findsOneWidget);
    
    final grandChildFinder = find.descendant(of: find.byWidget(parentWidget), matching: find.byType(GrandChildWidget));
    expect(grandChildFinder, findsOneWidget);
    
    final parentFinder = find.ancestor(of: find.byWidget(childWidget), matching: find.byType(ParentWidget));
    expect(parentFinder, findsOneWidget);
  });
}