Nella mia app, utilizzo un OptionSelector per scegliere da un elenco di stazioni ciclabili. Ho anche un componente mappa con segnaposto per ogni stazione.
Quando tocco un segnaposto, cambia anche OptionSelector nell'indice della stazione corrispondente, poiché questa è una buona UX.
Ciò che non è buono UX è il modo in cui OptionSelector risponde a questo cambio di indice, che si sta animando come se fosse stato sfogliato dal dito dell'utente. In altre parole, molto tempo dopo che l'utente ha toccato l'indicatore della mappa e ha ricevuto tutte le informazioni di cui ha bisogno, OptionSelector sta ancora "ruotando" sull'indice della stazione.
Ecco un video che dimostra questo comportamento: https://www.youtube.com/watch?v=jXKWlAmNYsw
Vorrei che questo OptionSelector cambiasse immediatamente il suo indice, senza animazione. C'è un modo per fare questo?
Ecco come faccio attualmente le cose. Sono più che felice di essere corretto se questo è il modo sbagliato di farlo. Uso un WorkerScript (un thread QML, più o meno) per effettuare chiamate API. Quando questo WorkerScript ritorna, sposta OptionSelector in questo modo:
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.
*/
}
}
Qualsiasi aiuto o approfondimento apprezzato - evviva!