【问题标题】:Unable to define object inside a statefulwidget无法在 statefulwidget 中定义对象
【发布时间】:2020-08-13 18:00:52
【问题描述】:

我现在正在尝试将数据存储在对象引用中,它只是一个简单的类,但我正在用单例类替换它,请解释为什么我无法在构建方法上方初始化对象。

class MyStatefulWidget1State extends State<MyStatefulWidget1> {

  final TextEditingController titleController = TextEditingController();

  Data().value = "dscs";  **//IF i define here it will produce error**

  @override
  Widget build(BuildContext context) {
    Data().value = "dscs";    **// bu if i define here it will work just fine** 
    return TextField(controller: titleController);
  }
}

class Data {
  String value;
}

【问题讨论】:

  • 你能指出错误吗?

标签: flutter dart


【解决方案1】:

在任何类型的类中,我们只能在您尝试访问对象成员变量(值)时创建变量和方法,这不是它给出错误的原因。

虽然 build 方法也是一种方法,所以你也可以访问任何类或对象的成员变量。这就是它在那里工作的原因。

如果你在 MyStatefulWidget1State 状态下创建简单的对象数据类,然后尝试访问它的成员变量,那么你也会得到同样的错误。

如下所示。

Data c = Data();
c.value = 'f';

但是我们可以在任何方法中做到这一点,所以它可以在 build 方法中工作。

【讨论】:

    【解决方案2】:

    您可以为此使用initState()

    @override
    void initState() {
      super.initState();
      Data().value = "dscs";
    }
    

    【讨论】:

    • 其实我正在寻找一个解释,你能解释一下它会很有帮助吗
    • 2 个错误:构造函数名称无效,应为类成员
    • 那是因为build()方法首先被执行然后Data类被定义。尝试在类中创建一个构造函数——Data{(this.value)}
    猜你喜欢
    • 1970-01-01
    • 2019-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 2021-10-03
    • 1970-01-01
    相关资源
    最近更新 更多