Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在super.initState()之前和super.initState()之后运行方法的区别

在super.initState()之前和super.initState()之后运行方法的区别
EN

Stack Overflow用户
提问于 2020-01-16 20:18:09
回答 2查看 330关注 0票数 0

super.initState()之前和super.initState()之后运行一个方法有什么区别?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
     @override
  void initState() {
    super.initState();  
    getCurrentUser();   
  }



 @override
  void initState() {
 getCurrentUser(); 
    super.initState();  

  }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-16 21:29:59

对框架的解释: Dart是基于类的面向对象编程语言,所以当您构建一个小部件时,您可以从基类StatelessWidgetStatefulWidget扩展它。initState是颤振小部件中的生命周期方法(正如您可能知道的那样),它只能在StatefulWidgets中覆盖,并且只调用一次。因此,它调用基类的initState,这就是为什么调用super.initState()的原因,它反过来创建BuildContext和附加状态。

现在是您的问题:在super.initState()之前或之后调用方法没有发现任何不同之处。事件,我尝试在addPostFrameCallback之前添加super.initState(),它运行得很好。在这两种情况下,即使是super.mounted也是正确的。

票数 2
EN

Stack Overflow用户

发布于 2020-01-17 00:14:56

建议Dart/文档“建议”调用super.initState()作为主体实现之前的第一个方法。

但是如果我们看看它是如何实现的,文档

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@protected
@mustCallSuper
void initState() {
  assert(_debugLifecycleState == _StateLifecycle.created);
}

可以看到,它只包含一个assert()。断言内置函数它只在调试模式下调用,而不是在生产模式中调用。因此,归根结底,这并不重要,因为super.initState()实际上什么也不做。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59781126

复制
相关文章

相似问题

代码应该写在super.initState()之前,还是在Flutter之后?

3124

super.initstate()未被调用

11

通常,应该在super.initState()之前还是之后执行自定义初始化()?

14

颤振中的initState和super.initState是什么?

30

为什么在initState(){ super.initState()}中没有调用函数?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文