Exemple 8 : Listes
La fonction main: Cette fonction initialise une instance d'application en utilisant app.New(), et crée une nouvelle fenêtre intitulée "Exemple 08: listes". Elle crée ensuite des onglets interactifs sur la fenêtre en utilisant la fonction makeTabs, définit le contenu de la fenêtre sur ces onglets, définit la taille de la fenêtre et enfin, affiche la fenêtre et démarre la boucle d'événements de l'application.
La fonction makeTabs(win fyne.Window) *container.AppTabs { ... }: Cette fonction crée deux listes : une pour des nombres et une pour des personnes. Ces listes sont passées à container.NewAppTabs(), qui crée des onglets pour chaque liste. La fonction container.NewTabItem() est utilisée pour créer des onglets individuels à partir de ces listes.
La fonction makeNumbersList() *container.Scroll { ... }: Cette fonction crée une liste déroulante de nombres. Le tableau de nombres est utilisé pour définir les éléments de la liste. Chaque élément de la liste est une étiquette affichant un nombre du tableau, et la sélection d'un élément incrémente le nombre correspondant.
La fonction makePersonList(win fyne.Window) *container.Scroll { ... }: Cette fonction est similaire à makeNumbersList(), mais elle crée une liste déroulante de personnes à la place. Chaque personne est affichée comme une étiquette dans la liste, et la sélection d'une personne affiche une boîte de dialogue d'information avec le nom de la personne sélectionnée.
Fonction makeNumbersList()
La fonction makeNumbersList() dans le code Go fourni est utilisée pour créer une liste déroulante de nombres. Voici une explication des différentes parties de la fonction :
La fonction
makeNumbersList()renvoie un pointeur vers uncontainer.Scroll, qui est un type de conteneur déroulant dans la bibliothèque Fyne.Un tableau d'entiers appelé
numbersest initialisé avec un ensemble de nombres.La fonction
widget.NewListest utilisée pour créer un nouveau widget de liste. Cette fonction accepte trois arguments :Une fonction qui renvoie le nombre d'éléments dans la liste, dans ce cas la longueur de
numbers.Une fonction qui renvoie une nouvelle instance de l'objet qui constituera chaque élément de la liste. Dans ce cas, elle renvoie une étiquette avec le texte "Item".
Une fonction qui est appelée pour mettre à jour les propriétés d'un élément lorsqu'il devient visible. Ici, cette fonction définit le texte de l'étiquette de chaque élément pour afficher son index numérique dans la liste et la valeur correspondante de la tranche
numbers.
list.OnSelectedest un gestionnaire d'événements qui est déclenché lorsqu'un élément de liste est sélectionné. Ici, il est défini pour incrémenter la valeur dans la tranchenumbersà l'index de l'élément sélectionné, puis rafraîchir l'affichage de l'élément.Le widget de liste est placé dans un conteneur déroulant en utilisant
container.NewVScroll(list)et est renvoyé depuis la fonction.
Fonction makePersonList()
Semblable à makeNumbersList(), makePersonList() crée également un widget de liste mais à la place des éléments numériques, les éléments Person sont créés.
Décortiquons en détail la fonction makePersonList:
Il s'agit d'une déclaration de fonction makePersonList qui prend un paramètre fyne.Window et renvoie un *container.Scroll.
Un tableau de type Person avec trois éléments est déclaré et initialisé.
Un widget.List est créé.
La première fonction appelle
len(people)pour obtenir le nombre d'éléments de la liste.La deuxième fonction crée un nouvel objet étiquette pour chaque élément.
La troisième fonction définit le texte pour chaque étiquette afin d'afficher le nom et l'âge de la personne.
Une fonction de gestion d'événement, pour quand un élément est sélectionné, est définie. Cette fonction affiche une boîte de dialogue avec le nom de la personne sélectionnée.
La fonction se termine en créant un nouveau conteneur de défilement vertical pour la liste et en le renvoyant.