为什么 initState 中的变量不可访问?
Why are the variables in initState not acessible?
我想在 initState 中创建一个 TextController,然后像处理好孩子一样处理它。但出于某种原因,控制器在 intiState 之外不可用:
class _InputFieldEnterThingState extends State<InputFieldEnterThing> {
@override
void initState() {
TextEditingController textController =
TextEditingController(text: 'placeholder');
super.initState();
}
@override
void dispose() {
textController.dispose();
super.dispose();
}
它告诉我“textController”未在 dispose() 中定义...同样,如果我尝试在构建方法中使用它。就像 varialbe 在 initState 中是严格本地的一样。我觉得我错过了一些非常明显的东西,但找不到它。
由于您在 initState
中声明了变量 textController
,该变量只能在 initState
中访问。如果你想访问 textController
例如在处置中,您必须在 initState
.
之外声明它
class _InputFieldEnterThingState extends State<InputFieldEnterThing> {
late TextEditingController textController;
@override
void initState() {
textController = TextEditingController(text: 'placeholder');
super.initState();
}
@override
void dispose() {
textController.dispose();
super.dispose();
}
textController
是initState
方法中的局部变量,需要将他设为全局,dispose
方法会识别他
方法:
class _InputFieldEnterThingState extends State<InputFieldEnterThing> {
TextEditingController textController; // make him global
@override
void initState() {
textController = // without redefine
TextEditingController(text: 'placeholder');
super.initState();
}
@override
void dispose() {
textController.dispose();
super.dispose();
}
我想在 initState 中创建一个 TextController,然后像处理好孩子一样处理它。但出于某种原因,控制器在 intiState 之外不可用:
class _InputFieldEnterThingState extends State<InputFieldEnterThing> {
@override
void initState() {
TextEditingController textController =
TextEditingController(text: 'placeholder');
super.initState();
}
@override
void dispose() {
textController.dispose();
super.dispose();
}
它告诉我“textController”未在 dispose() 中定义...同样,如果我尝试在构建方法中使用它。就像 varialbe 在 initState 中是严格本地的一样。我觉得我错过了一些非常明显的东西,但找不到它。
由于您在 initState
中声明了变量 textController
,该变量只能在 initState
中访问。如果你想访问 textController
例如在处置中,您必须在 initState
.
class _InputFieldEnterThingState extends State<InputFieldEnterThing> {
late TextEditingController textController;
@override
void initState() {
textController = TextEditingController(text: 'placeholder');
super.initState();
}
@override
void dispose() {
textController.dispose();
super.dispose();
}
textController
是initState
方法中的局部变量,需要将他设为全局,dispose
方法会识别他
方法:
class _InputFieldEnterThingState extends State<InputFieldEnterThing> {
TextEditingController textController; // make him global
@override
void initState() {
textController = // without redefine
TextEditingController(text: 'placeholder');
super.initState();
}
@override
void dispose() {
textController.dispose();
super.dispose();
}