Saya baru saja mulai memahami Flutter, tetapi saya mengalami masalah dalam mencari tahu cara menyetel status aktif tombol.
Dari dokumen, dikatakan setel onPressed
ke null untuk menonaktifkan tombol, dan memberinya nilai untuk mengaktifkannya. Ini bagus jika tombol terus berada dalam status yang sama untuk siklus proses.
Saya mendapat kesan bahwa saya perlu membuat widget Stateful khusus yang memungkinkan saya memperbarui status aktif tombol (atau callback onPressed) entah bagaimana.
Jadi pertanyaan saya adalah bagaimana saya melakukannya? Ini sepertinya persyaratan yang cukup mudah, tetapi saya tidak dapat menemukan apa pun di dokumen tentang cara melakukannya.
Terima kasih.
Jawaban:
Saya pikir Anda mungkin ingin memperkenalkan beberapa fungsi pembantu ke
build
tombol Anda serta widget Stateful bersama dengan beberapa properti untuk dimatikan.isButtonDisabled
)onPressed
nilainya ke salah satunull
atau beberapa fungsionPressed: () {}
isButtonDisabled
sebagai bagian dari kondisional ini dan kembalikan salah satunull
atau beberapa fungsi.setState(() => isButtonDisabled = true)
untuk membalik variabel bersyarat.build()
metode lagi dengan status baru dan tombol akan ditampilkan dengannull
penangan pers dan dinonaktifkan.Berikut adalah beberapa konteks lainnya menggunakan proyek penghitung Flutter.
Dalam contoh ini saya menggunakan terner sebaris untuk mengatur
Text
dan secara kondisionalonPressed
, tetapi mungkin lebih sesuai bagi Anda untuk mengekstrak ini ke dalam fungsi (Anda dapat menggunakan metode yang sama ini untuk mengubah teks tombol juga):sumber
onPressed: _isButtonDisabled ? null : () => _incrementCounter
return () {}
jadi ini disengaja. Saya tidak ingin menggunakan panah gemuk di sini karena saya ingin fungsi menjalankan dan mengembalikannull
serta menonaktifkan tombol.disabled
properti, tim Flutter? Ini tidak intuitif: - /Menurut dokumen:
"Jika callback onPressed adalah null, maka tombol tersebut akan dinonaktifkan dan secara default akan menyerupai tombol datar di disabledColor."
https://docs.flutter.io/flutter/material/RaisedButton-class.html
Jadi, Anda mungkin melakukan sesuatu seperti ini:
sumber
disabledElevation
,disabledColor
danDisabledTextColor
tidak akan berfungsi sebagaimana mestinya.Jawaban sederhananya adalah
onPressed : null
memberikan tombol yang dinonaktifkan.sumber
Pengaturan
dan
sumber
onPressed
selalu berupa fungsi sehingga tombol ditampilkan sebagai 'dapat diklik' meskipun akan mengabaikan peristiwa klik jikaisEnabled
properti disetel. Untuk benar-benar menonaktifkan tombol, gunakanRaisedButton(onPressed: isEnabled ? _handleClick : null
Untuk widget dengan jumlah tertentu dan terbatas, menggabungkannya dalam widget IgnorePointer melakukan hal ini: ketika
ignoring
propertinya disetel ke true, sub-widget (sebenarnya, seluruh subpohon) tidak dapat diklik.Jika tidak, jika Anda ingin menonaktifkan seluruh subpohon, lihat AbsorbPointer ().
sumber
Fungsionalitas Aktifkan dan Nonaktifkan sama untuk sebagian besar widget.
Mis, tombol, sakelar, kotak centang, dll.
Cukup atur
onPressed
properti seperti yang ditunjukkan di bawah inionPressed : null
mengembalikan widget DinonaktifkanonPressed : (){}
atauonPressed : _functionName
mengembalikan widget yang Diaktifkansumber
Anda juga dapat menggunakan AbsorbPointer, dan Anda dapat menggunakannya dengan cara berikut:
Jika Anda ingin tahu lebih banyak tentang widget ini, Anda dapat memeriksa tautan berikut Flutter Docs
sumber
Ini cara termudah menurut saya:
sumber