当前位置: 首页 > news >正文

东乡做网站/中国新闻网最新消息

东乡做网站,中国新闻网最新消息,福建seo关键词优化外包,搜索引擎优化和关键词竞价广告的区别老孟导读:关于生命周期的文章共有2篇,一篇(此篇)是介绍 Flutter 中Stateful 组件的生命周期。 第二篇是 Flutter 中与平台相关的生命周期, 博客地址:http://laomengit.com/blog/20201227/%E7%9B%B8%E5%85%B…

老孟导读:关于生命周期的文章共有2篇,一篇(此篇)是介绍 Flutter 中Stateful 组件的生命周期。

第二篇是 Flutter 中与平台相关的生命周期,

博客地址:http://laomengit.com/blog/20201227/%E7%9B%B8%E5%85%B3%E5%B9%B3%E5%8F%B0%E7%9A%84%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F.html

博客中还有更多精彩文章,也欢迎加入 Flutter 交流群。

此篇文章所说的生命周期与 StatefulWidget 组件的生命周期是不同的,这里平台相关的生命周期指的是特定平台相关操作所产生的生命周期,比如 Android 中 App 退到后台后的onPause等。

有人下场景,App正在播放视频,此时回到手机桌面或者切换到其他App,那么此时视频应该暂停播放,Flutter 中使用 AppLifecycleState 实现:

class AppLifecycle extends StatefulWidget {@override_AppLifecycleState createState() => _AppLifecycleState();
}class _AppLifecycleState extends State<AppLifecycle>with WidgetsBindingObserver {@overridevoid initState() {super.initState();WidgetsBinding.instance.addObserver(this);}@overridevoid didChangeAppLifecycleState(AppLifecycleState state) {if (state == AppLifecycleState.resumed) {//TODO}}@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text('App 生命周期'),),body: Center(child: Text(''),),);}@overridevoid dispose() {WidgetsBinding.instance.removeObserver(this);super.dispose();}
}

重点是重写 didChangeAppLifecycleState 方法,AppLifecycleState 中的状态包括:resumed、inactive、paused、detached。

didChangeAppLifecycleState 方法的回调来源于系统的通知(notifications),正常情况下,App是能正常接收到这些通知,但有的情况下是无法接收到通知的,比如用户强制关机、手机没有电自动关机等。

下面对其状态详细说明:

  • resumed:应用程序可见且响应用户输入。
  • inactive:应用程序处于非激活状态,无法响应用户输入。在iOS上,打电话、响应TouchID请求、进入应用程序切换器或控制中心都处于此状态。在Android上,分屏应用,打电话,弹出系统对话框或其他窗口等。
  • pause:应用程序不可见且无法响应用户输入,运行在后台。处于此状态时,引擎将不会调用 Window.onBeginFrameWindow.onDrawFrame
  • detached:应用程序仍寄存在Flutter引擎上,但与平台 View 分离。处于此状态的时机:引擎首次加载到附加到一个平台 View的过程中,或者由于执行 Navigator pop ,view 被销毁。

下面是关于生命周期经常遇到的问题:

有2个页面A和B,在B页面点击返回键返回到A,didChangeAppLifecycleState 不回调

其实这个问题大部分人是想要实现类似于Android 中 onResume 中的功能,用 didChangeAppLifecycleState 是无法实现此功能的,didChangeAppLifecycleState 是对应于整个应用程序的,而不是 Flutter 中 不同的路由(页面)。

从A->B,在从B返回A,A重新加载数据使用如下方法:

A页面代码:

class A extends StatelessWidget {@overrideWidget build(BuildContext context) {return RaisedButton(onPressed: ()async{var result = await Navigator.of(context).push(MaterialPageRoute(builder: (context){return B();}));//从B返回到A时,执行下面的代码//TODO 加载数据});}
}

B页面代码:

class B extends StatelessWidget {@overrideWidget build(BuildContext context) {return RaisedButton(onPressed: (){Navigator.of(context).pop('返回的参数');});}
}

交流

老孟Flutter博客(330个控件用法+实战入门系列文章):http://laomengit.com

欢迎加入Flutter交流群(微信:laomengit)、关注公众号【老孟Flutter】:

http://www.jmfq.cn/news/4815253.html

相关文章:

  • 怎么套模板 网站/北京全网推广
  • 免费b站在线观看人数在哪里/竞价托管哪家公司好
  • 商城型网站建设/简易的旅游网页制作
  • 深圳企业高端网站建设/武汉外包seo公司
  • 遵义企业网站建设/平台推广网站
  • 深圳市南山区做网站的小公司/中国企业培训网
  • 做网站的ebay网/最新注册域名查询
  • 网站域名有哪些/百度seo教程
  • 创意网名昵称大全/seo营销技巧培训班
  • 专业的论坛网站建设开发/方象科技专注于什么领域
  • 做PPT不错的网站有哪些/全国seo公司排名
  • 广州 企业网站建设/哪些网站可以发广告
  • 男人互做网站/黑科技推广软件
  • apache添加多个网站/公司品牌营销策划
  • 做网站公司哪家好/计算机编程培训学校哪家好
  • 影视cms哪个好/郑州网站优化外包顾问
  • 甘肃兰州网站建设/hs网站推广
  • 用java做网站可以/关键词优化排名用什么软件比较好
  • 沈阳网站建设优化企业/学校教育培训机构
  • 软文自助发稿软件开发 网站建设/百度推广系统营销平台
  • 做网站怎么导入地图/百度竞价广告怎么投放
  • 网站建设行业背景/谷歌推广平台
  • 公司只有一个设计师/优化网站排名解析推广
  • 网站建设seo运营规划/微信引流推广怎么找平台
  • 专门做游戏的网站/中国站长之家域名查询
  • ip地址做网站/河南网站定制
  • 结合实际/浙江seo技术培训
  • c网站开发源代码/哪家竞价托管专业
  • 大型平台网站开发/app推广软文范文
  • 韩国唯美网站设计/seo排名分析