Ketika saya tahu bahwa Flutter memberi saya kendali penuh atas semua yang ada di layar, sampai ke piksel terakhir, saya segera ingin membuat perbedaan untuk dunia UI aplikasi yang kebanyakan statis dan terprediksi. Widget full kustom yang bisa saya gambar menggunakan CustomPaint meminta agar dikeluarkan dari ScrollView atau Container khususnya. Saya ingin bebas bergerak, melakukan zoom, dan menjelajahi dunia yang bisa dibuat berkat Flutter. Widget Transform adalah wahana saya untuk menjelajahi dunia ini, dan GestureDetector menyediakan kontrolnya.
GestureDetector memberikan akses mudah ke sebagian besar gestur, dan Transform menyediakan kemampuan untuk mengubah perspektif di mana widget turunan terlihat. Keduanya adalah widget sederhana dan independen yang mengikuti pola komposabilitas Flutter. Saat kami menggabungkan keduanya, setiap gestur pada widget menjadi cara untuk menjelajah.
Pengantar transformasi
Terlepas dari kekuatannya, sesungguhnya yang dilakukan widget Transform adalah mengambil matriks transformasi dan menerapkannya pada turunannya. Ini menghasilkan terjemahan, skala, rotasi, dan bahkan kemiringan turunan terhadap induknya, semua ditetapkan oleh satu objek Matrix4 sederhana.
Matriks sangat mudah digunakan ketika melakukan transformasi karena mereka bisa dikomposisikan. Menyimpan parameter terjemahan, skala, rotasi, dan kemiringan yang terpisah mungkin terlihat intuitif pada awalnya, tetapi mudah sekali terjadi ambiguitas dengan hal-hal seperti urutan.
Bayangkan saat pengguna melakukan serangkaian gestur secara berturut-turut. Jika gestur tersebut hanya serangkaian tarik, maka kita bisa dengan mudah menyimpan transformasi akhir sebagai Offset lokasi yang dihasilkan. Namun, jika pengguna menarik, lalu memutar di lokasi yang baru, dan mengulanginya beberapa kali, bagaimana kita melacak status akhirnya? Sebuah offset dan radian ganda tidaklah cukup, bahkan jika kita juga memasukkan titik fokus. Kita harus terus melacak daftar operasi yang semakin banyak dilakukan pengguna dan mengulangi semuanya hanya untuk mencapai status akhir.
Matriks transformasi bisa dikombinasikan dengan sejumlah matriks transformasi lainnya tanpa batas, dan hasilnya selalu berupa matriks tunggal lain dengan ukuran yang sama. GPU sangat cepat dalam melakukan matematika semacam ini, bahkan paralel secara besar-besaran, seperti untuk setiap piksel di layar. Ini membuatnya sangat bagus untuk menyimpan status widget seperti Transform, dan hasilnya adalah widget yang sangat mudah digunakan developer Flutter.
Mendeteksi gestur
Jika kita menghubungkan beberapa gestur pengguna untuk memperbarui matriks transformasi menggunakan GestureDetector, maka pengguna memiliki kebebasan untuk membuka layar yang kita tampilkan kepada mereka. GestureDetector menyediakan akses mudah ke gestur seperti tarik, yang bisa kita gunakan untuk terjemahan, cubit, melakukan zoom, dan bahkan rotasi dengan dua jari.
GestureDetector menyediakan banyak callback berbeda untuk berbagai gestur dan status awal, update, dan akhir. Namun, jika Anda mengimplementasikan sesuatu seperti demo yang menggabungkan beberapa gambar, callback skala adalah yang Anda butuhkan. Callback onScaleUpdate menyediakan focalPoint, baik skala horizontal maupun vertikal, dan rotasi, semuanya ada di sini. Hal ini memungkinkan Anda untuk merespons beberapa gestur sekaligus, seperti ketika pengguna memutar dan melakukan penskalaan dalam satu gestur. Lihat ScaleUpdateDetails untuk semua hal yang disediakan callback onScaleUpdate.
Hal lain yang sering diterapkan dalam transformasi fisik seperti ini adalah inersia. Setelah pengguna menyelesaikan gestur, mereka mungkin mengharapkan transformasi berlanjut untuk sementara waktu sebelum berhenti perlahan. Flutter menyediakan parameter “velocity” di callback akhir semua gestur ini, termasuk skala. Seperti yang mungkin Anda duga dengan gerakan berbasis fisika, nilai ini lebih besar jika pengguna menggerakkan jari mereka dengan cepat dan lebih kecil jika pengguna membuat gestur lambat.
Anda bisa membuat efek inersia ini dengan infrastruktur Flutter lain yang sangat menarik, animasi Tween . Dengan menggunakan velositas dan posisi pada akhir gestur, dan pengetahuan dasar fisika, Anda bisa menemukan posisi akhir dan durasi untuk diberikan kepada Tween, dan mempersilakan Tween membereskannya. Flutter bahkan menyertakan class friction simulation untuk menangani beberapa perhitungan ini dan membuat semuanya terasa sangat realistis.
Kesimpulan
Menggabungkan Transform dan GestureDetector memberi kita fitur yang sangat kuat. Banyak hal yang bisa dilakukan, dari mulai menggerakkan papan permainan, seperti yang ditunjukkan pada screenshot, membuka peta, hingga menyediakan penampil gambar interaktif, dan lainnya.
Aplikasi yang ditampilkan di sini sekarang tersedia sebagai demo di aplikasi Flutter Gallery . Semua kode adalah bagian dari repositori open source flutter utama, dan bisa ditemukan di sumber demo transformasi . Sebagian besar logika transformasi terdapat dalam class GestureTransformable , termasuk animasi inersia .
Ayo Gabung Bersama Kami Situs Agen Bola Terpercaya dan Teraman di Dunia Indonesia Hanya Minimal Deposit dan
ReplyDeleteWithdraw 50RB
dan Juga Menyediahkan Bonus - Bonus Terbaik untuk di Dapatkan dan juga Event Parlay berhadiah Menarik :
Promo - Promo Bonus di Jayabet188 :
Bonus DEPOSIT 100% ( KHUSUS NEW MEMBER )
PROMO CASHBACK 100 % MIX PARLAY
BONUS DEPOSIT SPORTSBOOK 10%
BONUS DEPOSIT SPORTSBOOK 5%
BONUS CASHBACK SPORTBOOK 5%
BONUS CASHBACK CLASSIC GAMES 5%
BONUS ROLLINGAN LIVE CASINO 0.7%
BONUS REFERAL 2.5% SEUMUR HIDUP
Untuk Informasi lebih lanjut dapat menghubungi admin kami :
Whatsapp : +85515244751
Line : Jayabet188
Situs Agen Online
Thanks a lot for posting this very informative article!
ReplyDeletehttps://jp.casinority.com/slots/
Maxbet / IBCBET telah RESMI mengganti namanya menjadi Nova88. Yuk Daftar Nova88 dan Login Nova88 untuk menikmati keseruan baru dalam bermain Judi Bola Online dan Live Casino Nova88.
ReplyDeletehttp://nova88.fun/
Blackjackku merupakan situs yang membahas soal Blackjack online indonesia.
ReplyDeleteYuk kunjungi situs kami di http://blackjackku.com/ untuk membaca berbagai artikel soal Blackjack, Cara menang bermain blackjack online, dan masih banyak lainnya.
qq online adalah permainan Judi kartu online yang sangat digemari oleh para pecinta judi online. Yuk kunjungi situs kami di http://qqonline.best/ untuk mengetahui info lebih dari qq online indonesia.
ReplyDeleteLink login88 adalah situs judi online yang menyediakan banyak informasi seputar judi online Seperti cmdbet, dan anda bisa melakukan login cmdbet dan daftar cmdbet pada situs kami, Baca dan simak beberapa tips dan berbagai cara untuk menang memainkan judi online di situs kami.
ReplyDeletehttp://linklogin88.com/
Situs Judi Poker Online Indonesia merupakan permainan judi yang menggunakan kartu remi sebagai alat untuk memainkannya. Yuk baca artikel lainnya seputar Poker Online Indonesia
ReplyDeletehttp://pokeronlineindonesia.fun/
Nagadomino99.co adalah situs permainan Poker Online Indonesia yang menggunakan uang asli untuk memainkannya.
ReplyDeleteTidak hanya Poker, tentu saja Nagadomino99.co menyediakan banyak permainan lainnya seperti Ceme Online, Blackjack Online, Dll.
Kunjungi website kami di https://nagadomino99.co/ untuk mengetahui lebih dalam tentang situs kami :D
https://nagadomino99.co/news
https://nagadomino99.co/register
https://nagadomino99.co/jackpot
https://nagadomino99.co/promotion
https://nagadomino99.co/referral
https://nagadomino99.co/games
This comment has been removed by the author.
ReplyDeleteDo you want to get really helfpul tips about Android keylogger? Here you can read more about i t
ReplyDeleteGreat article! Thank you. Can I post it on https://mindepcasinos.com/ ?
ReplyDeletePaketQQ merupakan situs judi dominoqq online dan bandarq dengan pelayanan 24 jam online non stop dan proses deposit withdraw terpercaya di indonesia.
ReplyDeleteThis comment has been removed by the author.
ReplyDelete