Saya menggunakan StatefulWidget yang konstruktornya berisi Objek, seperti

class X extends StatefulWidget {
  X({this.o});
  Object o;
...
}

Seperti yang kadang-kadang terjadi, objek ini o berubah, tetapi widget X tidak diperbarui, jadi saya harus menambahkan ObjectKey di konstruktor:

class X extends StatefulWidget {
  X({this.o, this.key});
  Object o;
  ObjectKey key;
...
}

Sekarang setiap kali saya memanggil konstruktor, saya harus memanggil X(o: o, key: ObjectKey(o));. Apakah ada cara yang lebih baik untuk melakukan ini? Alangkah baiknya, jika konstruktor itu sendiri yang mengaturnya, seperti

class X extends StatefulWidget {
  X({this.o, this.key = ObjectKey(o)});
  Object o;
  ObjectKey key;
...
}

Tapi karena ObjectKey(o) bukan ekspresi konstan, itu tidak dapat digunakan sebagai parameter default. Apakah ada cara lain?

1
König Wey 9 Juli 2020, 17:53

1 menjawab

Jawaban Terbaik

Anda dapat mencapai apa yang Anda inginkan dengan menggunakan notasi ini di konstruktor Anda:

class X extends StatefulWidget {
  X({this.o}) : key = ObjectKey(o);
  Object o;
  ObjectKey key;
}

Ini disebut daftar penginisialisasi, yang dapat Anda temukan selengkapnya tentang di sini.

2
Mateus Felipe 9 Juli 2020, 15:30