Невозможно определить объект внутри StatefulWidget - PullRequest
1 голос
/ 29 апреля 2020

Я пытаюсь сохранить данные в ссылке на объект прямо сейчас, это просто простой класс, но буква, которую я заменяю на одноэлементный класс, любезно объясняет, почему я не могу инициализировать объект чуть выше метода сборки.

class MyStatefulWidget1State extends State<MyStatefulWidget1> {

  final TextEditingController titleController = TextEditingController();

  Data().value = "dscs";  **//IF i define here it will produce error**

  @override
  Widget build(BuildContext context) {
    Data().value = "dscs";    **// bu if i define here it will work just fine** 
    return TextField(controller: titleController);
  }
}

class Data {
  String value;
}

Ответы [ 2 ]

1 голос
/ 29 апреля 2020

В любом типе класса мы можем создавать переменную и метод только тогда, когда вы пытаетесь получить доступ к объектной переменной-члену (значению), поэтому она выдает ошибку.

Хотя метод сборки также является одним из типов метод, так что вы можете получить доступ к любой переменной класса или объекта. Вот почему он работает там.

Если вы создаете простой объект класса данных в состоянии MyStatefulWidget1State, а затем пытаетесь получить доступ к его переменной-члену, тогда вы также получите ту же ошибку.

Что-то вроде следующего.

Data c = Data();
c.value = 'f';

Но мы можем сделать это любым способом, поэтому он будет работать в методе сборки.

1 голос
/ 29 апреля 2020

Вы можете использовать initState() для этой цели.

@override
void initState() {
  super.initState();
  Data().value = "dscs";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...