web-dev-qa-db-fra.com

Comment vérifier si le widget est visible à l'aide de FlutterDriver

Je ne sais pas comment je vérifierais si un widget est actuellement affiché ou non en utilisant FlutterDriver .

En utilisant WidgetTester c'est très facile à réaliser en utilisant par exemple findsOneWidget .
Cependant, lors des tests d'intégration utilisant FlutterDriver, il n'y a pas d'accès à un objet WidgetTester.

Le FlutterDriver.waitFor La méthode n'indique pas si le widget a été trouvé dans la durée donnée.

Comment vérifier si un widget est à l'écran à l'aide de FlutterDriver?

Flutter Driver n'a pas de méthode explicite pour vérifier si un widget est présent/existe, mais nous pouvons créer une méthode personnalisée qui servira à cet effet en utilisant la méthode waitFor. Par exemple, j'ai un simple widget text à l'écran et j'écrirai un test de pilote de flottement pour vérifier si ce widget est présent ou non en utilisant une méthode personnalisée isPresent.

Code principal:

body: Center(
      child:
      Text('This is Test', key: Key('textKey'))

Test du pilote Flutter pour vérifier si ce widget est présent ou non est comme ci-dessous:

test('check if text widget is present', () async {
      final isExists = await isPresent(find.byValueKey('textKey'), driver);
      if (isExists) {
        print('widget is present');
      } else {
        print('widget is not present');
      }
    });

isPresent est une méthode personnalisée dont la définition est la suivante:

isPresent(SerializableFinder byValueKey, FlutterDriver driver, {Duration timeout = const Duration(seconds: 1)}) async {
  try {
    await driver.waitFor(byValueKey,timeout: timeout);
    return true;
  } catch(exception) {
    return false;
  }
}

L'exécution du test détecte que le widget est présent:

enter image description here

Si je commente le code du widget text puis que j'exécute le test, il détecte que le widget n'est pas présent:

enter image description here

J'espère que cela t'aides.

6
Darshan