ViewControllers

ViewControllers

ViewControllers 相当于 Flutter 中的什么?

在 iOS 里,一个 ViewController 是用户界面的一部分,通常是作为屏幕或者其中的一部分来使用。这些组合在一起构成了复杂的用户界面,并以此对应用的 UI 做不断的扩充。在 Flutter 中,这一任务又落到了 Widget 这里。就像在导航那一章提到的,Flutter 中的屏幕也是使用 Widgets 表示的,因为“万物皆 widget!”。使用 Naivgator 在不同的 Route 之间切换,而不同的路由则代表了不同的屏幕或页面,或是不同的状态,也可能是渲染相同的数据。

如何监听 iOS 中的生命周期?

在 iOS 里,可以重写 ViewController 的方法来捕获自身的生命周期,或者在 AppDelegate 中注册生命周期的回调。Flutter 中则没有这两个概念,但是你可以通过在 WidgetsBinding 的 observer 中挂钩子,也可以通过监听 didChangeAppLifecycleState() 事件,来实现相应的功能。

可监听的生命周期事件有:

  • inactive - 应用当前处于不活跃状态,不接收用户输入事件。这个事件只在 iOS 上有效,Android 中没有类似的状态。

  • paused - 应用当前处于用户不可见状态,不接收用户输入事件,但仍在后台运行。

  • resumed - 应用可见,也响应用户输入。

  • suspending - 应用被挂起,在 iOS 平台没有这一事件。

关于这些状态的更多细节,请参看 AppLifecycleStatus 文档。