web-dev-qa-db-fra.com

FLOTTER Widget Test Finder échoue car le widget est en dehors des limites de l'arbre de rendu

Question: Qu'est-ce qui contrôle les limites de "l'arbre de rendu" lors de l'exécution des tests de widget (flutter_test)?

Je vous demande parce que je reçois une erreur sur un bouton très basique où il ne peut pas trouver le widget en raison de son décalage vertical étant en dehors des limites de "l'arbre de rendu" qui semble fixe à 800x600.

Je reçois le message:

AVERTISSEMENT: un appel à appuyer sur () avec Finder "Exactement un widget avec texte" Plus d'infos "(Ignorer les widgets hors plan): texte (" Plus d'infos ", dépendances: [MediaQuery, DefaultTextStyle])" Dérivé un décalage ( Décalage (400.0, 641.8) ) qui ne toucherait pas le test sur le widget spécifié. Peut-être que le widget est en réalité hors écran ou qu'un autre widget est obscurcissant, ou le widget ne peut pas recevoir d'événements de pointeur. En effet, décalseaux (400,0, 641.8) est en dehors des limites de la racine de l'arbre de rendu, taille 800.0, 600.0). Le Finder correspond à cette RENDERBOX: RENDERPARAGE # 1B6B1 REMAYOUNTBOUTAIRE = UP27 Le résultat du test de frappe à ce décalage est le suivant: HitTestresult (Hittstressry # B18DD (Renderview # 408C3) # 0 widgetController._getelementPoint (package: flutter_test/src/contrôleur.dard: 953: 25) # 1 widgetController.getCenter (paquet: flutter_test/src/contrôleur.dart.dart.dart.dart.DART: 836: 12) # 2 widgetController.tap (paquet: flutter_test/src/contrôleur.dart: 271: 18) # 3 Main. (Fichier: ///users/tommy/repos/surveyapp/survey/test/widget_test.dart: 99: 18)

La taille de l'arbre de rendu dans ce message d'erreur est de 800 x 600. (Je ne sais pas comment cela est défini ou pourquoi. Il est curieux pour moi que c'est exactement 800x600? Donc, c'est en train d'être placé quelque part. Est-ce parce que j'ai un Projet Web et il est par défaut de cette taille pour une raison quelconque lors de l'exécution d'un test?). Tout widget passé 600 après la hauteur de décalage n'est pas trouvé dans le test. L'écran fonctionne bien sur l'émulateur iOS et sur Chrome sous webbutter. Lorsque vous utilisez devtools, inspecteur de widget, il n'y a pas de problèmes de mise en page. C'est juste un bouton avec la colonne des ancêtres, le rembourrage, le centre , SafeArea et Scanfold dans le cadre d'une simple page de widget étatique.

(J'ai eu ce qui se passe sur la version 2.12 de Fluterer ou plus.)

10
TommyLCox

Cette question m'a été résolue à l'aide d'un extrait suivant

await tester.ensureVisible(find.byKey(Key(key)));
await tester.pumpAndSettle();
0
Rafunzel