Maintenant que cette exploration de la taille et des contraintes est terminée, je veux revenir à une application
un peu plus réactive.
Et pour cela, nous avons bien sûr déjà veillé à ce qu'il y ait un tableau à côté de la liste.
Mais je veux maintenant travailler sur ce modal.
Cela fonctionne également en mode paysage, mais je dirais que nous pourrions utiliser cet espace un peu mieux si nous
étions en mode paysage, car nous n'avons pas besoin, par exemple, de cette longue rangée de titres ici.
En outre, nous sommes confrontés au problème suivant : si j'ouvre mon clavier, je ne peux pas atteindre
les autres entrées, et c'est donc un problème que nous pourrions vouloir résoudre.
C'est aussi la raison pour laquelle j'obtiens une erreur dans le code de Visual Studio après avoir ouvert
le clavier dans la vue paysage de cette fenêtre modale.
Tout d'abord, assurons-nous que nous pouvons ouvrir ce clavier et accéder à toutes les entrées.
Pour ce faire.
Nous devons aller au début de la nouvelle dépense parce que c'est à la fin que nous rendons ce formulaire et dans la méthode
de construction de notre classe d'état de la nouvelle dépense.
Ici, nous pouvons à nouveau utiliser la requête média du contexte comme nous l'avons fait précédemment, mais pas pour calculer la largeur ou la hauteur
disponible, du moins pas encore.
Mais au lieu de cet objet de requête média, nous pouvons également accéder à un objet Insets de la vue.
Il s'agit d'un objet qui contient des informations supplémentaires sur les éléments de l'interface utilisateur qui peuvent se superposer à certaines
parties de l'interface.
Par exemple, si j'accède à View Insets en bas, j'obtiens tous les éléments supplémentaires de l'interface utilisateur qui se superposent à l'interface
utilisateur en bas.
Et c'est exactement ce que fait ce clavier.
Il se glisse par le bas et se superpose à mon interface utilisateur.
Donc ici, avec la requête média de vue insets bottom, je peux obtenir la quantité d'espace occupée par ce clavier.
Je peux ensuite l'enregistrer dans l'espace clavier ou tout autre nom que vous souhaitez lui donner.
Nous pourrions maintenant l'utiliser pour ajuster notre padding ici et ajouter plus de padding à partir du bas si cet
espace est occupé par le clavier.
Nous pourrions donc définir l'espace inférieur ici à l'espace clavier plus 16, de sorte que nous ayons toujours au moins 16 pixels
d'espace inférieur.
Mais nous ajoutons cet espace supplémentaire qui pourrait être occupé par le clavier.
Maintenant, si nous faisons cela, nous devons supprimer const, puisque l'index des bords est maintenant calculé dynamiquement.
Maintenant, si vous définissez le padding comme ceci et que vous sauvegardez le tout, vous remarquerez que rien ne change et que
nous obtenons toujours cette erreur.
La raison en est que nous devons également définir le contenu de cette feuille modale.
Cet arbre de widgets renvoyé par le nouveau widget de dépenses est donc scrollable, ce qui nous permet de le faire défiler.
Car si vous regardez l'écran, il faut bien sûr pouvoir le faire défiler, sinon nous ne pourrons pas atteindre
les autres champs de saisie.
C'est pourquoi nous devons envelopper ce widget de remplissage avec un autre widget.
Je vais donc choisir cette action de refactorisation et choisir la vue de défilement d'un seul enfant, que vous
avez déjà vue dans le cours.
Si vous faites cela, que vous enregistrez tout et que vous rechargez, vous verrez que c'est beaucoup mieux.
Il est maintenant possible de faire défiler l'écran et d'accéder à toutes les entrées.
Bien sûr, ce n'est pas idéal, mais en mode paysage, nous devrons nous en accommoder parce que nous
avons ce clavier et qu'il ne reste qu'une hauteur limitée par la suite.
Il est ce qu'il est.
Mais maintenant, au moins, ça a l'air mieux.
Vous noterez cependant que si vous fermez le clavier, la feuille modale n'occupe plus la totalité
de la hauteur.
Cela peut vous convenir, mais vous pouvez aussi faire en sorte qu'il prenne à nouveau toute la hauteur.
D'ailleurs, ici, je reçois toujours une erreur indiquant qu'il y a un débordement, mais cela semble être un comportement
bizarre ou un bogue.
Comme je ne détecte aucun débordement ici, je peux tout atteindre et tout semble fonctionner ici.
Il semble donc qu'il s'agisse d'un message d'erreur erroné.
Quoi qu'il en soit, pour être sûr que nous prenons à nouveau toute la hauteur, je vais envelopper cette vue de défilement
enfant unique avec un autre widget.
Je l'emballerai avec une boîte de taille précise.
En effet, sur cette boîte de taille, je peux régler la hauteur et je vais la régler sur le double de l'infini.
Pour s'assurer qu'il occupe le plus d'espace possible.
Et avec cela, si nous sauvegardons et rechargeons, j'obtiens à nouveau ce mode plein écran, toujours scrollable,
mais plein écran et cet étrange message d'erreur que je vais ignorer ici.
Mais c'est ainsi que nous pouvons nous assurer que nous pouvons toujours accéder à tous les contenus, que nous affichions
cette application en mode paysage ou, comme précédemment, en mode portrait.
Bien entendu, il fonctionne toujours comme il se doit.