flutter 知识点(一)

164 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第18天,点击查看活动详情

什么是Flutter

Flutter是⾕歌的移动UI框架,可以快速在iOS和Android上构建⾼质量的原⽣⽤户界⾯。 Flutter可以与现有的代码⼀起⼯作。在全世界,Flutter正在被越来越多的开发者和组织使⽤,并且Flutter是完全免费、开源的。

优点:

  • 热重载(Hot Reload),利⽤Android Studio直接⼀个ctrl+s就可以保存并重载,模拟器⽴马就可以看见效果,相⽐原⽣慢长的编译过程强很多。
  • ⼀切皆为Widget的理念,对于Flutter来说,⼿机应⽤⾥的所有东西都是Widget,通过可组合的空间集合、丰富的动画库以及分层扩展的架构实现了富有感染⼒的灵活界⾯设计。
  • 借助可移植的GPU加速的渲染引擎以及⾼性能本地代码运⾏时以达到跨平台设备的⾼质量⽤户体验。

缺点:

  • 不支持热更新
  • 三方库少,需要自己造轮子
  • dart语言编写,需要重新学习

Flutter的特性

  • 跨平台
  • 热重载

Flutter中的生命周期

Widget的生命周期
  • StatelessWidget

    对于StatelessWidget来说,生命周期只有build过程。build是用来创建Widget的,在每次页面刷新时会调用build

  • StatefulWidget

    • createState 是StatefulWidget来创建State的方法,只调用一次

    • initState 是StatefulWidget创建后调用的第一个方法,而且只执行一次。在执行initState时,View没有渲染,但是StatefulWidget 已经被加载到渲染树里了,这事的StatefulWidget的mount的值会变为true,知道dispose才会变为false.一般我们把初始化的一些操作都放在initState中

    • didChangeDependencies didChangeDependencies会在initState后立即调用,之后只有当StatefulWidget依赖的InheritedWidget发生变化之后,didChangeDependencies才会调用,所以didChangeDependencies可以调用多次。

    • build build方法会在didChangeDeoendencies之后立即调用,在之后setState()刷新时,会重新调用build绘制页面,所以build方法可以调用多次。但一般不再build中创建除创建Widget的方法,否则会影响渲染效率。

    • addPostFrameCallback addPostFrameCallback是StatefulWidget渲染结束之后的回调,只会调用一次,一般是在initState里添加回调:

    • didUpdateWidget 组件状态改变时候调用,会调用多次

    • deactivate 当State对象从树中被移除时,会调用此回调,会在dispose之前调用

    • dispose 组件移除时调用,一般在dispose中做一些取消监听、动画的操作,和initState相对使用。

    • reassemble 在热重载(hot reload)时会被调用,此回调在Release模式下永远不会被调用

APP的生命周期(AppLifecycleState)
  • resumed 可见并能响应用户的输入,同安卓的onResume
  • inactive 处在并不活动状态,无法处理用户响应,同安卓的onPause
  • paused 不可见并不能响应用户的输入,但是在后台继续活动中,同安卓的onStop
  • suspending iOS中没用,安卓里就是挂起,不会再执行drawframe回调;

image.png