Flutter核心技术与实战
陈航
美团点评高级技术专家
立即订阅
6150 人已学习
课程目录
已完结 47 讲
0/4登录后,你可以任选4讲全文学习。
课前必读 (3讲)
开篇词 | 为什么每一位大前端从业者都应该学习Flutter?
免费
01 | 预习篇 · 从0开始搭建Flutter工程环境
02 | 预习篇 · Dart语言概览
Flutter开发起步 (3讲)
03 | 深入理解跨平台方案的历史发展逻辑
04 | Flutter区别于其他方案的关键技术是什么?
05 | 从标准模板入手,体会Flutter代码是如何运行在原生系统上的
Dart语言基础 (3讲)
06 | 基础语法与类型变量:Dart是如何表示信息的?
07 | 函数、类与运算符:Dart是如何处理信息的?
08 | 综合案例:掌握Dart核心特性
Flutter基础 (13讲)
09 | Widget,构建Flutter界面的基石
10 | Widget中的State到底是什么?
11 | 提到生命周期,我们是在说什么?
12 | 经典控件(一):文本、图片和按钮在Flutter中怎么用?
13 | 经典控件(二):UITableView/ListView在Flutter中是什么?
14 | 经典布局:如何定义子控件在父容器中排版的位置?
15 | 组合与自绘,我该选用何种方式自定义Widget?
16 | 从夜间模式说起,如何定制不同风格的App主题?
17 | 依赖管理(一):图片、配置和字体在Flutter中怎么用?
18 | 依赖管理(二):第三方组件库在Flutter中要如何管理?
19 | 用户交互事件该如何响应?
20 | 关于跨组件传递数据,你只需要记住这三招
21 | 路由与导航,Flutter是这样实现页面切换的
Flutter进阶 (17讲)
22 | 如何构造炫酷的动画效果?
23 | 单线程模型怎么保证UI运行流畅?
24 | HTTP网络编程与JSON解析
25 | 本地存储与数据库的使用和优化
26 | 如何在Dart层兼容Android/iOS平台特定实现?(一)
27 | 如何在Dart层兼容Android/iOS平台特定实现?(二)
28 | 如何在原生应用中混编Flutter工程?
29 | 混合开发,该用何种方案管理导航栈?
30 | 为什么需要做状态管理,怎么做?
31 | 如何实现原生推送能力?
32 | 适配国际化,除了多语言我们还需要注意什么?
33 | 如何适配不同分辨率的手机屏幕?
34 | 如何理解Flutter的编译模式?
35 | Hot Reload是怎么做到的?
36 | 如何通过工具链优化开发调试效率?
37 | 如何检测并优化Flutter App的整体性能表现?
38 | 如何通过自动化测试提高交付质量?
Flutter综合应用 (6讲)
39 | 线上出现问题,该如何做好异常捕获与信息采集?
40 | 衡量Flutter App线上质量,我们需要关注这三个指标
41 | 组件化和平台化,该如何组织合理稳定的Flutter工程结构?
42 | 如何构建高效的Flutter App打包发布环境?
43 | 如何构建自己的Flutter混合开发框架(一)?
44 | 如何构建自己的Flutter混合开发框架(二)?
结束语 (1讲)
结束语 | 勿畏难,勿轻略
特别放送 (1讲)
特别放送 | 温故而知新,与你说说专栏的那些思考题
Flutter核心技术与实战
登录|注册

34 | 如何理解Flutter的编译模式?

陈航 2019-09-14
你好,我是陈航。今天,我们来聊聊 Flutter 的编译模式吧。
在开发移动应用程序时,一个 App 的完整生命周期包括开发、测试和上线 3 个阶段。在每个阶段,开发者的关注点都不一样。
比如,在开发阶段,我们希望调试尽可能方便、快速,尽可能多地提供错误上下文信息;在测试阶段,我们希望覆盖范围尽可能全面,能够具备不同配置切换能力,可以测试和验证还没有对外发布的新功能;而在发布阶段,我们则希望能够去除一切测试代码,精简调试信息,使运行速度尽可能快,代码足够安全。
这就要求开发者在构建移动应用时,不仅要在工程内提前准备多份配置环境,还要利用编译器提供的编译选项,打包出符合不同阶段优化需求的 App。
对于 Flutter 来说,它既支持常见的 Debug、Release 等工程物理层面的编译模式,也支持在工程内提供多种配置环境入口。今天,我们就来学习一下 Flutter 提供的编译模式,以及如何在 App 中引用开发环境和生产环境,使得我们在不破坏任何生产环境代码的情况下,能够测试处于开发期的新功能。

Flutter 的编译模式

Flutter 支持 3 种运行模式,包括 Debug、Release 和 Profile。在编译时,这三种模式是完全独立的。首先,我们先来看看这 3 种模式的具体含义吧。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《Flutter核心技术与实战》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(6)

  • Geek_082580
    对于一个 flutter module 工程, 即需要嵌入到已有 Android 项目,又需要单独运行调试,在这两种状态下需要不同的配置,比如不同的 plugin,请问老师有什么好的办法吗?

    作者回复: 用InheritedWidget配置多入口就可以了吧

    2019-09-15
    1
    2
  • 渐醒AINY
    老师讲的很棒,帮助了我很多,我的一个Flutter项目也制作完成,并上架发布了

    作者回复: 厉害👍

    2019-10-18
    1
  • 矮个子先生😝
    看到过另外一种判断方法:bool.fromEnvironment('dart.vm.product')

    作者回复: 你可以点击kReleaseMode查看其声明,这两种方式是一样的

    2019-09-23
    1
    1
  • hz
    var config = AppConfig.of(context); 获取配置的时候需要context作为参数,在build方法里面就可以方便获得配置。在其他地方没有context作为参数的时候,需要获取配置应该怎么获取

    作者回复: 坦白讲以InheritedWidget的方式传递数据,其原理就是基于Widget树的,所以如果获取不到Widget树上下文,就拿不到数据

    2019-09-16
    1
  • 和小胖
    思考题:老师我的理解是直接再 new 一个 AppConfig 出来传入不同的参数不就好了吗?只是相当于我们有多种开发的 config,有几种就配置几个 AppConfig 可以吗?

    作者回复: 恩,加一个开关就好,本质上跟切换主题类似

    2019-10-23
  • liyuan
    仅仅通过-t能配置的参数还是太弱了,如果有dev,qa,uat,prod等多个环境,每个环境的app应用名称/图标可能有差别,同时希望手机上多个环境的app共存

    android可以用build flavor实现,ios应该怎么做比较好?

    作者回复: 之前有讲过,Flutter只能接管引擎初始化以后的行为(运行时),像app名称、图标、启动图这些还是需要原生工程去搞的。按照这个标准解答你的问题:
    1、dev,qa,uat,prod等多个环境可以在flutter工程里通过指定工程入口搞定
    2、原生工程相关的配置差异,iOS可以采用多个build target方式实现。

    2019-10-07
收起评论
6
返回
顶部