flutter - 在提供者的消费者小部件内的测试中找不到小部件

标签 flutter flutter-test flutter-provider

我为我的小部件创建了以下 Flutter 测试

testWidgets("", (WidgetTester tester) async {
      await tester.pumpWidget(
        ChangeNotifierProvider<SettingsViewProvider>(
          create: (context) => SettingsViewProvider(),
          child: MaterialApp(
            localizationsDelegates: [S.delegate],
            home: SettingsScreen(),
          ),
        ),
      );

      final textFormFieldFinder = find.byElementType(TextFormField);
      await tester.pump();
      expect(textFormFieldFinder, findsNWidgets(3));
    });

该小部件是一个有状态的小部件,它使用 ChangeNotifierProvider 并且消费者围绕着一个包含三个“TextFormFields”的列表。

Consumer<State>(
   builder: (context, value, child)=> Column(
       children: [TextFormField(...), TextFormField(...), TextFormField(...)];
   )
)

Expected: exactly 3 matching nodes in the widget tree

Actual: _ElementTypeFinder:

Which: means none were found but some were expected



不幸的是,我收到在小部件树中找不到小部件。

最佳答案

似乎可以使用以下方法解决:

final textFormFieldFinder = find.byType(TextFormField);

代替:
final textFormFieldFinder = find.byElementType(TextFormField);

关于flutter - 在提供者的消费者小部件内的测试中找不到小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61440323/

相关文章:

flutter - 标签列表中一排排圆形按钮触发在一起

Flutter 无法从方法 'Future<dynamic>' 返回类型为 '_onBackPress' 的值,因为它的返回类型为 'Future<bool>'

Flutter bloc emmitInOrder 不会发出初始状态,但会发出

flutter - 无法使用Provider.of(context)调用类方法

dart - 如何在 Flutter/dart 中获取星期几的日期?

Flutter 不会加载新的列表生成器页面

dart - showGeneralDialog 未按预期工作

flutter - 在ThemeData中指定字体大小时如何根据屏幕宽度执行动态字体大小?

android - Flutter:在同一棵树中使用 Multiprovider 和 Consumer 进行依赖注入(inject)

flutter - 将该getter调用为null,但小部件仍然可以正常构建