Что это за свойство виджета из флаттера StatefulWidget - PullRequest
3 голосов
/ 20 июня 2019

Это очень простой вопрос, я иногда вижу что-то вроде: widget.title или widget.(anything) в трепетании;как этот пример в дочернем виджете Текст AppBar Виджет:

class MyApp extends StatefulWidget{
    // some declarations here
    @override
    _MyApp createState() => _MyApp();
}

class _MyApp extends State<MyApp>{
   // some declaration here
    @override
    Widget build(BuildContext context){

        return MaterialApp(
            home: Scaffold(
               appBar: AppBar(child: Text(widget.title),),
            ),
        );
    }
}

что это на самом деле?

widget.title я имею в виду, что означает ссылка widget?что это?

Ответы [ 2 ]

1 голос
/ 20 июня 2019

Длинный ответ короткий

Вы расширили State класс
Ссылается документы

Класс State имеет свойство readonly, которое называется widget.На что вы ссылаетесь.

1 голос
/ 20 июня 2019

Класс MyApp расширяет StatefulWidget, что означает, что этот виджет хранит изменяемое состояние. Когда виджет MyApp впервые вставляется в дерево, платформа вызывает функцию createState(), чтобы создать новый экземпляр _MyAppState, чтобы связать его с этим местоположением в дереве. (Обратите внимание, что подклассы State обычно именуются с начальными подчеркиваниями, чтобы указать, что они являются частными деталями реализации.) Когда родительский объект этого виджета перестраивается, родительский объект создает новый экземпляр MyApp, но платформа повторно использует экземпляр _MyAppState, который является уже в дереве, вместо повторного вызова createState.

Чтобы получить доступ к свойствам текущего MyApp, _MyAppState может использовать его widget property. Если родитель перестраивает и создает новый MyApp, _MyAppState перестраивается с новым значением виджета. Если вы хотите получать уведомления при изменении свойства виджета, переопределите функцию didUpdateWidget(), которая передается как oldWidget, чтобы позволить вам сравнивать старый виджет с текущим виджетом.

Теперь согласно документам: свойство виджета

Это свойство инициализируется платформой перед вызовом initState. Если родитель обновляет это местоположение в дереве до нового виджет с тем же runtimeType и Widget.key, что и текущий конфигурации, среда обновит это свойство, чтобы сослаться на новый виджет, а затем вызвать didUpdateWidget, передавая старый конфигурация в качестве аргумента.

ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...