в моем приложении у меня есть панель навигации, и тело обновляется в соответствии с плиткой, нажатой в ящике. Тело одинаково для каждого класса, это виджет с отслеживанием состояния и возвращает представление списка. Для каждого экземпляра этого класса (и, следовательно, для каждой плитки) мне нужно вызвать метод initState. Я заметил, что он вызывается только для первого экземпляра первой плитки, а затем вызывает только метод сборки. Как я могу запустить фрагмент кода в первый раз для каждого экземпляра?
Синтез: в приложении есть ящик с множеством плиток, каждая плитка связана с экземпляром класса, который является телом приложения. Но initState вызывается только в первом экземпляре.
Вот пример:
class FirstPage extends StatefulWidget {
@override
_FirstPage createState() => new _FirstPage();
}
class _FirstPage extends State<FirstPage> {
@override
void initState() {
super.initState();
print("debug");
}
@override
Widget build(BuildContext context) {
print('hi');
return ListView(children: <Widget>[Text('text')],
);
}
}
Если я создам экземпляр этого класса в первый раз, когда он напечатает: debug и hi. Во второй раз, когда я создаю этот экземпляр, он печатает просто: привет
Вы не можете. Весь смысл initState в том, чтобы вызывать один раз при инициализации состояния.
Вы можете посмотреть на другие жизненные циклы. Такие как