android - 当页面在颤动中加载时,在所有函数之前调用哪个函数?
问题描述
我是一名 android studio 开发人员,但现在在 Flutter 工作。在 android studio on Start 和 OnCreate 函数在活动开始时被调用。但是我想知道在 Flutter 中加载页面时首先调用哪个函数。甚至在 initState() 之前。
解决方案
Flutter 中的基本事件序列实际上很容易理解,因为它们都在代码中。假设您有一个非常简单的应用程序,只有一个 Stateful Widget。
import 'package:flutter/material.dart';
main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
MyAppState createState() {
return new MyAppState();
}
}
class MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Container()
),
);
}
}
当应用程序第一次启动时,一些 android 或 iOS 特定的事情首先发生。他们加载 dart 引擎并查找void main()
函数(尽管您不需要显式地将 void 作为返回值)。
调用 main 函数,其中runApp
使用MyApp
. 请注意,MyApp
这里没有构造函数,但可以。
然后,flutter 接管并做任何需要做的事情来开始(runApp
如果你想了解更多细节,请查看)。最终,MyApp.createState
被调用,其中创建了一个新的实例MyAppState
。然后,最后,initState
被调用。
需要注意的一个有趣的事情是 main 函数实际上并不需要立即调用runApp
。可以使 main 函数异步,并让它在调用 runApp 之前执行一些操作。
推荐阅读
- excel - 停止excel将E20保存为指数
- rxjs - 使用具有不同 Observable 源的 takeWhile 运算符作为标志
- javascript - Nuxt / vite 中的动态资产
- intellij-idea - 是否有像 Eclipse 的“选择下一个元素”这样的 Intellij 快捷方式?
- node.js - 在 MERN 中获取图像数据作为缓冲区
- json - 使用 JSON 格式在 SharePoint 在线列表中添加级联下拉功能
- node.js - 从 ReadableStream 创建 MediaStream
- sql - SSRS 子报表的可见性基于是否从主报表中选择
- php - 试图将数据传递给ajax函数,但不能
- google-cloud-platform - Google Cloud Platform Logging - 通过排除 liveness_check 和 readiness_check 来减少噪音