【问题标题】:Flutter: how do I either call a function inside a state class OR access a state class attribute?Flutter:如何调用状态类中的函数或访问状态类属性?
【发布时间】:2019-04-14 19:25:42
【问题描述】:

从 StatefulWidget 类中,我想在 State 类中调用一个函数:

class Parent extends StatefulWidget{

  // access _ParentState: iWantToAccessThis
  // OR
  // run from _ParentState: iWantToRunThis

  @override
  _ParentState createState() => new _ParentState();
}

class _ParentState extends State<Parent>{
  List<Object> iWantToAccessThis;
  void iWantToRunThis(){
    // do something
  }
  ...
}

更新:通过将我的列表设为静态列表找到了解决方法。由于列表总是有一个版本,因此这将起作用。但是,对于在状态内运行函数或访问非列表或静态属性(尽管我倾向于不可能访问非静态属性),我仍然想要一个正确的答案。

class Parent extends StatefulWidget{

  static void _getList(){
    _ParentState._iWantToAccessThis;
  }

  @override
  _ParentState createState() => new _ParentState();
}

class _ParentState extends State<Parent>{
  static List<Object> _iWantToAccessThis;
  List<Object> get iWantToAccessThis => _iWantToAccessThis;
  ...
}

【问题讨论】:

  • 这完全不可能。小部件部分无法访问其状态
  • 你能解释一下你为什么要这样做吗?如果你想做一些初始化,状态类有 initState 方法。

标签: function flutter state stateful


【解决方案1】:

你可以简单地这样做,但我不推荐它

class _MyWidget extends StatefulWidget {
  State state;
  @override
  State<StatefulWidget> createState() {
    state = _MyWidgetState();
    return state;
  }
}

我认为还有其他方法可以解决您的问题,然后从小部件访问状态

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    • 1970-01-01
    • 2021-09-23
    • 2020-08-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多