作者回复: 赞
作者回复: 你理解错了,我来帮你梳理下:
1.从前台退居后台,打印的是inactive->paused,但你忘了它之前的状态是resumed;
2.从后台进入前台,打印的是inactive->resumed,但你忘了它之前的状态是paused
作者回复: 因为State在视图树的相对位置变了
作者回复: WidgetsBinding是一个连接上层Widget回调与底层Flutter引擎实现的一个抽象胶水类,在不同的平台有不同的实现(比如在单元测试中是TestWidgetsFlutterBinding,在UI开发中是WidgetsFlutterBinding),所以我们需要在代码中用WidgetsBinding.instance获取特定的实例,而WidgetsBindingObserver只是一个接口而已
作者回复: 参考21节“路由与导航”里面提到的页面关闭参数
作者回复: 不推荐买书,如果想要快速了解一些核心Feature可以看看
官方的cookbook: https://flutter.dev/docs/cookbook和wendux写的Flutter实战:https://book.flutterchina.club/
作者回复: Gradle默认每次编译都会resolve dependencies,每次都会去进行网络请求。如果你那边访问jCenter很慢,这个步骤就卡住了。
你可以临时在Project Preferences的Gradle那里启用Offline work,不过新增依赖之后你需要在把这个设置改回来
作者回复: 表示程序被暂时挂起,这是操作系统底层暴露的状态,不是所有的平台都有(比如iOS就没有),所以这个状态可以理解成基本没用
作者回复: 导航站切换,前后台切换会涉及到多个页面的视图树调整和重新渲染,所以会刷新多次。但每次渲染完成都会调postframecallback是确定的
作者回复: 前后台切换,导航站切换会涉及到多个页面的Widget树的调整和重新渲染
作者回复: 比如你要等界面上的某个元素出现之后,才认为视图渲染完成,就可以用这个机制。具体可以参考40节分享
作者回复: 报什么错?
作者回复: Widget就是一个配置,所以不涉及到生命周期。Element有
作者回复: 是个中间过渡状态,一般没什么用
作者回复: 试试在IDE上 Command+鼠标点击 类名?
作者回复: 因为State的相对位置变了呀。不过放心UI是不会刷新的
作者回复: Mixin就是以非继承的方式实现代码复用的一种机制而已呀