为什么 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();
      }

textControllerinitState方法中的局部变量,需要将他设为全局,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();
  }