Skip to content
Kezdőlap » widget tulajdonságok elérése

widget tulajdonságok elérése

Vannak esetek, amikor fontos lehet egy osztályon belül a widget tulajdonságok elérése. Tipikus példát, erre a StatefulWidget-eknél találunk.

Ismétlés: Azt tudjuk, hogy egy StatefulWidget két osztályt is tartalmaz. Az egyik maga a Widget osztálya, a másik pedig a State class-t kiterjesztő osztály.

Példa

Tegyük fel, hogy a StatefulWidget első osztályának van egy tulajdonsága, vagy akár egy metódusa, amit használni akarunk a State class-on belül:

class QuestionsScreen extends StatefulWidget {
  const QuestionsScreen({
    super.key,
    required this.onSelectAnswer,
  });
  
  final void Function(String answer) onSelectAnswer;

Az onSelectAnswer az a paraméterben kapott függvény, amit használni szeretnénk.

Az osztályváltozók csak az osztályon belül érhetők el. Ezért alapértelmezés szerint az onSelectAnswer függvényváltozót nem tudjuk használni a második osztályon belül:

class _QuestionsScreenState extends State<QuestionsScreen> {

Ha használni akarnánk, akkor egy hibát jelezne a VSCode:

widget tulajdonság nélküli használat

Mi lehet erre a megoldás?

A widget tulajdonság használata

A Flutter kínál egy megoldást a widget tulajdonság segítségével. Maga a widget tulajdonság egy beépített tulajdonsága a State osztálynak. Éppen ezért használhatjuk azokban az osztályokban is, amik kiterjesztik a State osztályt. Vagyis a példában a _QuestionScreenState osztályon belül.

És ez a widget tulajdonság ad nekünk hozzáférést a StatefulWidget első osztályához és annak tulajdonságaihoz.

class _QuestionsScreenState extends State<QuestionsScreen> {
  var currentQuestionIndex = 0;

  void answerQuestion(String selectedAnswer) {
    widget.onSelectAnswer(selectedAnswer);

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük