时间:2020/8/30
1.main函数--入口函数
void main() =>runApp(MaterialApp())
2.MaterialApp()的构造方法里面包含很多的参数:
MaterialApp({
Key key,
this.title = '', // 设备用于为用户识别应用程序的单行描述
this.home, // 应用程序默认路由的小部件,用来定义当前应用打开的时候,所显示的界面
this.color, // 在操作系统界面中应用程序使用的主色。
this.theme, // 应用程序小部件使用的颜色。
this.routes = const <String, WidgetBuilder>{}, // 应用程序的顶级路由表
this.navigatorKey, // 在构建导航器时使用的键。
this.initialRoute, // 如果构建了导航器,则显示的第一个路由的名称
this.onGenerateRoute, // 应用程序导航到指定路由时使用的路由生成器回调
this.onUnknownRoute, // 当 onGenerateRoute 无法生成路由(initialRoute除外)时调用
this.navigatorObservers = const <NavigatorObserver>[], // 为该应用程序创建的导航器的观察者列表
this.builder, // 用于在导航器上面插入小部件,但在由WidgetsApp小部件创建的其他小部件下面插入小部件,或用于完全替换导航器
this.onGenerateTitle, // 如果非空,则调用此回调函数来生成应用程序的标题字符串,否则使用标题。
this.locale, // 此应用程序本地化小部件的初始区域设置基于此值。
this.localizationsDelegates, // 这个应用程序本地化小部件的委托。
this.localeListResolutionCallback, // 这个回调负责在应用程序启动时以及用户更改设备的区域设置时选择应用程序的区域设置。
this.localeResolutionCallback, //
this.supportedLocales = const <Locale>[Locale('en', 'US')], // 此应用程序已本地化的地区列表
this.debugShowMaterialGrid = false, // 打开绘制基线网格材质应用程序的网格纸覆盖
this.showPerformanceOverlay = false, // 打开性能叠加
this.checkerboardRasterCacheImages = false, // 打开栅格缓存图像的棋盘格
this.checkerboardOffscreenLayers = false, // 打开渲染到屏幕外位图的图层的棋盘格
this.showSemanticsDebugger = false, // 打开显示框架报告的可访问性信息的覆盖
this.debugShowCheckedModeBanner = true, // 在选中模式下打开一个小的“DEBUG”横幅,表示应用程序处于选中模式
})
参考网址:https://www.cnblogs.com/upwgh/p/11349498.html
参考网址:https://blog.csdn.net/u011272795/article/details/83016585
3.flutter中的=>表示什么
// =>是return语句的简写
add3(a, b) => a + b;
4.flutter的state
State 的生命周期可以分为三个阶段:创建(插入视图树)、更新(在视图树中存在)、销毁(从视图树中移除)
创建
State 初始化时会依次执行:构造方法 -> initState -> didChangeDependencies -> build,随后完成页面渲染
- 构造方法:State 生命周期的起点,Flutter 会通过调用 StatefulWidget.createState() 来创建一个 State。可以通过构造方法,来接收父 Widget 传递的初始化 UI 配置数据,而这些配置数据,决定了 Widget 最初的呈现状态
- initState:在 State 对象被插入视图树时调用。在 State 的生命周期中只会被调用一次,因此可以在 initState 函数中做一些初始化操作
- didChangeDependencies:专门用来处理 State 对象依赖关系变化,会在 initState() 调用结束后调用
- build:构建视图。经过构造方法、initState、didChangeDependencies 后,Framework 认为 State 已经准备就绪,于是便调用 build。在 build 中,需要根据父 Widget 传递过来的初始化配置数据及 State 的当前状态,创建一个 Widget 然后返回
更新
Widget 的状态更新,主要由 setState、didChangeDependencies 和 didUpdateWidget 触发
- setState:当状态数据发生变化时,可以通过调用 setState 方法告诉 Flutter 使用更新后数据重建 UI
- didChangeDependencies:State 对象的依赖关系发生变化后,Flutter 会回调该方法,随后触发组件构建。State 对象依赖关系发生变化的典型场景:系统语言 Locale 或应用主题改变时,系统会通知 State 执行 didChangeDependencies 回调方法
- didUpdateWidget:Widget 的配置发生变化时,或热重载时,系统会回调该方法
一旦这三个方法被调用,Flutter 随后便会销毁旧的 Widget,并调用 build 方法重建 Widget
销毁
组件销毁相对创建和更新而言更简单。比如页面销毁时或是组件被移除时,系统会调用 deactivate 和 dispose 这两个方法,来移除或销毁组件
- 当组件的可见状态发生变化时,deactivate 方法会被调用,这时 State 会被暂时从视图树中移除。 注意:页面切换时,由于 State 对象在视图树中的位置发生了变化,需要先暂时移除后再重新添加,重新触发组件构建,因此也会调用 deactivate 方法
- 当 State 被永久地从视图树中移除时,Flutter 会调用 dispose 方法,而一旦 dispose 方法被调用,组件就要被销毁了,因此可以在 dispose 方法中进行最终的资源释放、移除监听、清理环境等工作
5.Flutter在线编译