Di aplikasi saya, saya menggunakan OptionSelector untuk memilih dari daftar stasiun sepeda. Saya juga memiliki komponen peta dengan penanda tempat untuk setiap stasiun.
Ketika saya mengetuk penanda tempat, ia juga mengubah pemilih opsi ke indeks stasiun yang sesuai, karena ini adalah UX yang bagus.
Apa yang tidak baik UX adalah bagaimana OptionSelector merespons perubahan indeks ini, yang menjiwai dirinya sendiri seolah-olah telah dijentikkan oleh jari pengguna. Dengan kata lain, lama setelah pengguna mengetuk penanda peta dan menerima semua informasi yang mereka butuhkan, pemilih Option masih "berputar" ke indeks stasiun.
Berikut adalah video yang menunjukkan perilaku ini: https://www.youtube.com/watch?v=jXKWlAmNYsw
Saya ingin OptionSelector ini segera mengubah indeksnya, tanpa animasi. Apakah ada cara untuk melakukan ini?
Beginilah cara saya saat ini melakukan sesuatu. Saya lebih dari senang untuk dikoreksi jika ini adalah cara yang salah tentang hal ini. Saya menggunakan WorkerScript (utas QML, lebih atau kurang) untuk melakukan panggilan API. Ketika WorkerScript ini kembali, ia menggerakkan OptionSelector seperti:
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.
*/
}
}
Bantuan atau wawasan apa pun dihargai - tepuk tangan!
sumber
Jawaban:
Anda dapat melihat salinan OptionSelector qml di sini menggunakan UbuntuNumberAnimation ketika tidak diperluas. Tidak ada opsi untuk mematikannya dan jika fitur ini diperlukan Anda harus menambal upstream dan menunggu beberapa saat untuk versi baru perpustakaan.
Anda bisa membuat widget pemilih terbuka sendiri, menghapus bagian animasi dan pastikan Anda mengganti nama untuk digunakan dalam kode Anda. Saya merekomendasikan rute ini.
sumber