pumpVeloWidget<T extends Velo> method

Future<void> pumpVeloWidget<T extends Velo>(
  1. Widget widget, {
  2. List<T>? velos,
  3. bool wrapInMaterialApp = true,
})

Pumps a widget with the provided Velo instances.

Implementation

Future<void> pumpVeloWidget<T extends Velo<dynamic>>(
  Widget widget, {
  List<T>? velos,
  bool wrapInMaterialApp = true,
}) async {
  ArgumentError.checkNotNull(widget, 'widget');

  if (velos != null) {
    for (int i = 0; i < velos.length; i++) {
      ArgumentError.checkNotNull(velos[i], 'velos[$i]');
    }
  }

  Widget testWidget = widget;

  try {
    if (velos != null && velos.isNotEmpty) {
      testWidget = MultiProvider(
        providers: velos
            .map((velo) => ChangeNotifierProvider<T>.value(value: velo))
            .toList(),
        child: testWidget,
      );
    }

    if (wrapInMaterialApp) {
      testWidget = MaterialApp(home: Scaffold(body: testWidget));
    }

    await pumpWidget(testWidget);
  } catch (e) {
    throw StateError('Unexpected error while pumping widget: $e');
  }
}