Beranda › Forums › Belajar Flutter Mobile Apps Tingkat Menengah › passing data antar class
Tagged: #ask #flutter
- This topic has 2 replies, 2 voices, and was last updated 4 years, 7 months ago by Setiawan.
-
AuthorPosts
-
April 4, 2022 at 8:44 PM #49178
malam coach,
saya bingung ketika passing data antar classsemisal saya punya class statefull A, nah di dalam class tersebut saya membuat variabel bool misal
bool isDisable = true;
nah variabel isDisable ini saya gunakan untuk tombol, jika kondisi terpenuhi maka tombol enable jika tidak terpenuhi maka disable.
tombol ini saya taruh di class Akemudian saya membuat Class statefull B, nah disinilah saya mengatur kondisinya apakah terpenuhi atau tidak,,
nah pertanyaanya bagaimana caranya saya melempar value untuk merubah bool isDisable di class A dari class Bterimakasih
April 5, 2022 at 8:38 AM #49203AnonymousHi Diki,
Untuk melakukannya pertama kamu perlu membuat function yang isinya itu untuk merubah value tersebut pada class A, contoh nama functionnya setValue, kemudian agar function ini bisa dipanggil dari class B, maka di class B kamu perlu deklarsi sebuah variable dengan dataType Function dengan nama contohnya funcSetValue kemudian masukan variable funcSetValue ini ke dalam constructor class B tersebut. dengan begitu, di class B akan mempunya function yang kita reference ke function yang ada di class A, sehingga pada saat kita memanggil function funcSetValue pada class B, maka isi function yang ada di class A akan terpanggil, dengan begitu jika didalam function yang ada didalam class A itu untuk mengubah nilai yang ada diclass A menjadi nilai lain, makan nilainya akan berubah.contoh code di class B (StateFulWidget):
class ClassB extends StatefulWidget { const ClassB( {Key? key, required this.functSetValue, required this.funcTanpaParameter}) : super(key: key); final Function(String value) functSetValue; //function ini akan menerima value dari class B, dan akan dioper ke function yang ada di class A final Function funcTanpaParameter; //function tanpa perlu menerima value @override State<ClassB> createState() => _ClassBState(); } class _ClassBState extends State<ClassB> { @override Widget build(BuildContext context) { return Column( children: [ ElevatedButton( onPressed: () { widget.functSetValue("value baru"); //panggil function/variable dari class diatasnya yaitu menggunakan widget.namaVariable }, child: const Text('Button'), ), ElevatedButton( onPressed: () { widget.funcTanpaParameter; }, child: const Text('Button'), ) ], ); } }selain cara diatas, ada cara lain yaitu menggunakan state management
provider, jadi valuenya kita provide ke provider, kemudian di class B cukup langsung ubah nilai didalam provider tersebut maka semua widget/class dari child widget dimana value tersebut diprovide akan berubah nilainya karena ngelisten ke value pada provider tersebut. untuk ini konsepnya bisa diliat di video masalah state dan praktik provider.April 5, 2022 at 7:40 PM #49219oke tengkyu coach
-
AuthorPosts
- You must be logged in to reply to this topic.