Для фрагмента кода ниже:
// фрагмент основного класса
class MainState extends State<Main>{
MusicMaterial musicObj = MusicMaterial();
SoundsMaterial soundObj = SoundsMaterial();
@override
Widget build(BuildContext context) {
return Container(
child: something.value == 0
? musicObj
: soundObj
);
}
}
// фрагмент класса MusicMaterial
class MusicMaterialState extends State<MusicMaterial>{
@override
Widget build(BuildContext context) {
return Row(
AnotherClass obj1 = AnotherClass(0, 'test'),
AnotherClass obj2 = AnotherClass(1, 'test'),
);
}
}
/ / snippet of the AnotherClass class
class AnotherClassState extends State<AnotherClass>{
import '../globals.dart' as globals;
@override
void initState() {
globals.globalCounter++; // this variable is just a global variable from the globals.dart page
}
}
// snippet of the global.dart
library my_prj.globals;
globalCounter = 0;
Он продолжает создавать новый экземпляр каждый раз, когда состояние «if» обновляется в Main Государственный класс. Так, например, значение глобального счетчика продолжает расти от 0 до 2 до 4 ... 8 ... Как мы можем гарантировать, что объект не будет повторно инициализирован каждый раз, например void initState () from AnotherClassState вызывается только один раз? то есть значение остается 2 и только 2.
Я пробовал использовать «AutomaticKeepAliveClientMixin и @override bool get wantKeepAlive => true» - т.е. сохраняя его живым, поэтому при следующем вызове он не вызывает initState ( ) снова, но это не сработало.