Как решить, должны ли мои переменные быть внутри класса, который расширяет 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> у подкласса гораздо больше свободы на эту тему. Здесь вы должны поместить все свои внутренние переменные. Будь то изменение со временем или нет.

Другие вопросы по тегам