Dans mon application, j'utilise un OptionSelector pour choisir dans une liste de stations de vélo. J'ai également un composant de carte avec des marqueurs de place pour chaque station.
Lorsque je touche un marqueur de lieu, le sélecteur d'option devient également l'indice de la station correspondante, car c'est une bonne ergonomie.
Ce qui n'est pas une bonne UX, c'est la façon dont l'OptionSelector réagit à ce changement d'indice, qui s'anime comme s'il avait été effleuré par le doigt de l'utilisateur. En d'autres termes, longtemps après que l'utilisateur a tapé sur le marqueur de carte et reçu toutes les informations dont il a besoin, l'OptionSelector continue de "tourner" en fonction de l'indice de la station.
Voici une vidéo démontrant ce comportement : https://www.youtube.com/watch?v=jXKWlAmNYsw
J'aimerais que cet OptionSelector change immédiatement d'indice, sans animation. Existe-t-il un moyen de faire cela ?
Voici comment je procède actuellement. Je suis plus qu'heureux d'être corrigé si c'est la mauvaise façon de procéder. J'utilise un WorkerScript (un thread QML, plus ou moins) pour faire des appels API. Lorsque ce WorkerScript revient, il déplace l'OptionSelector comme suit :
WorkerScript {
id: queryStationsWorker
source: "../js/getstations.js"
onMessage: {
[...]
// Move the OptionSelector to the corresponding station's index.
stationSelector.selectedIndex = getLastStationIndex(lastStation.contents.stationName, stationsModel)
/*
* For the sake of clarity:
*
* getLastStationIndex() is a function which just returns an integer.
* lastStation is a U1DB database used for state saving.
* stationsModel is a model containing all of the stations.
*/
}
}
Toute aide et tout conseil sont les bienvenus - merci !