Как решить, должны ли мои переменные быть внутри класса, который расширяет StatefulWidget ИЛИ Starte<>?
У меня есть класс QuizPage расширяет StatefulWidget,
и другой класс _QuizPageState расширяет состояние
class QuizPage extends StatefulWidget {
var HERE; // or over there ?
@override
_QuizPageState createState() => _QuizPageState();
}
class _QuizPageState extends State<QuizPage> {
var HERE; // or over there ?
@override
Widget build(BuildContext context) {return Container();}
}
Какая разница, если таковые имеются?
Я новичок, чтобы трепетать, но в примерах, с которыми я столкнулся, я заметил, что если я хочу что-то отправить через конструктор, он должен быть в StatefulWidget, и я могу получить к нему доступ в State с помощью widget.anything.
1 ответ
Переменные внутри StatefulWidget
подкласс не может меняться со временем. Они должны быть объявлены как final
или у вас будет предупреждение.
Добавление переменных здесь должно быть сделано исключительно для параметров: другие виджеты связываются с этим.
State<T>
у подкласса гораздо больше свободы на эту тему. Здесь вы должны поместить все свои внутренние переменные. Будь то изменение со временем или нет.