我想在 initState 中创建一个 TextController,然后像处理好 child 一样处理它。但出于某种原因, Controller 在 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 中是严格本地的一样。我觉得我错过了一些非常明显的东西,但找不到。
最佳答案
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();
}
关于flutter - 为什么 initState 中的变量不可访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71211577/