Flutter 核心技术与实战
陈航
前美团点评高级技术专家
41876 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 48 讲
Flutter 核心技术与实战
15
15
1.0x
00:00/00:00
登录|注册

02 | 预习篇 · Dart语言概览

你好,我是陈航。
我们知道,Flutter 开发框架采用的开发语言是 Dart,所以要用好这个框架,我们必须要搞清楚 Dart 语言。
关于新技术的学习,一直以来我都非常认同一个观点:千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样才能从高维度理解问题。所以,为了帮助你更高效地掌握 Dart,以最快的速度具备开发一款 Flutter 应用的能力,今天这篇文章,我会先从 Flutter 开发的角度,和你介绍 Dart 语言出现的历史背景、特性以及未来。
然后,我会在本专栏的“Dart 基础”模块,与你详细分享它的特性、基础语法、类型变量、函数等知识,并和你分享一个使用 Dart 的综合案例,帮你学懂、学会这门语言。
如果你已经对 Dart 有一个初步印象了,也可以跳过这篇预习文章,直接学习后面的内容。

Dart 是什么?

2011 年 10 月,在丹麦召开的 GOTO 大会上,Google 发布了一种新的编程语言 Dart。如同 Kotlin 和 Swift 的出现,分别是为了解决 Java 和 Objective-C 在编写应用程序的一些实际问题一样,Dart 的诞生正是要解决 JavaScript 存在的、在语言本质上无法改进的缺陷。
那么,JavaScript 到底有哪些问题和缺陷呢?JavaScript 之父布兰登 · 艾克(Brendan Eich)曾在一次采访中说,JavaScript“几天就设计出来了”。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Flutter 核心技术与实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(42)

  • 最新
  • 精选
  • reven404
    入门简单,精通难. 如何掌握一门语言的精髓呢?

    作者回复: 首先明确,我们学习一门编程语言并不是为了成为语言专家,而是为了解决实际问题。我认为通过1-2天的学习,在了解一门语言是如何表达信息和处理信息之后,语言的基本套路就搞懂了,然后可以根据实际问题上手去实践,找相应成熟的框架和库,边做边学,加深理解。

    47
  • 朱雯
    这一篇其实我没怎么读懂,说说我的问题吧。 关于单线程问题:一般来说,多线程用于解决并发问题,Isolate这种不共享内存却类似与线程的东西我怎么看都像进程,多线程对比多线程的优势在于它可以节约资源,那么isolate是否是没有多线程优点呢,如果是为什么要放弃多线程的优点,只是线程安全问题吗。2:一个函数必然执行完成的设计,假如在这个语言种加入了io操作,后面的程序要跑,岂不是要等非常长的时间,这不是又要回到多线程上吗

    作者回复: 我们需要建立起这么一个概念,单线程也是可以异步执行的: 1.App绝大多数时间都在等待(等待用户交互、等待网络请求返回、等待I/O结果) 2.等待行为并不是阻塞的,以I/O和网络访问为例,操作系统均提供了非阻塞型API,事件回调告知状态 如果对这一块内容不清楚的话,可以看下之前我在GMTC 2019上的分享:《Event Loop、Future与Isolate - 单线程模型下的Dart异步编程模式》 后续分享我也会专门介绍Dart的异步和并发。

    4
    13
  • 不拘小节
    大神请教一个问题,一个ListView,里面套了一个Row,Row有两个Container,第一个Container设置宽高,第二个设置高度,想第二个宽度自适应撑满ListView,有什么方案吗

    作者回复: 试试IntrinsicHeight,这个组件会根据实际情况把子widget的高度调整它本身实际的高度。 IntrinsicHeight( child: Row(children: [ Container(width: 100,color: Colors.yellow), Expanded(flex:1,child: Container(height:300, color: Colors.amber)), ]), ) );

    2
    13
  • 创建昵称
    flutter现在计量单位是什么dp还是px,屏幕适配怎么解决!

    作者回复: 通常是dp

    3
    8
  • Geek_a9f943
    目前网上关于dart资料都还比较少,请问有关于dart学习的书籍推荐嘛?

    作者回复: 首先明确,我们学习一门编程语言并不是为了成为语言专家,而是为了解决实际问题。语言的知识体系也有所谓的28原则,我认为通过1-2天的学习,在了解一门语言是如何表达信息和处理信息之后,语言的基本套路就搞懂了,然后可以根据实际问题上手去实践。Dart的精髓在于其简洁而强大的语法特性,在解决问题时顺便去读一些Flutter的源码,了解Dart是如何从语言特性上支持这些功能 边做边学,加深理解就可以了。 所以我不太建议在已经有其他编程语言基础的情况下再去系统的学习Dart,如果对Dart确实很感兴趣,可以参考官方的教程:https://dart.dev/guides/language

    7
  • YOUNG
    RN最大的优势就是热更新,Flutter会有支持的可能吗?

    作者回复: Flutter高性能的其中一个重要因素就是因为Dart在发布期是AOT,所以Google是不可能改成动态编译的,另外苹果也不允许除了JSCore之外的其他动态编译/解释执行环境。 不过如果你的诉求是希望能够实现动态界面,目前业界已经有在上层封装DSL实现Flutter动态布局的实践了,可以看看GMTC大会上美团和微信的分享

    6
  • 呼呼
    在写flutter app的过程中,遇见一个问题,想请教一下。一级页面push到二级页面,或者二级页面pop回去的时候,一级页面都会重新build一次(一级页面和二级页面都是通过provide进行状态管理的),导致页面很卡顿。

    作者回复: 有一些通用的改造方法,比如不要直接在根部直接套StatefulWidget,而是把可变部分最小化;引入key,或是重写canUpdate方法

    5
  • sid
    Dart VM 的内存分配策略比较简单,创建对象时只需要在堆... 极客时间版权所有: https://time.geekbang.org/column/article/104071 对这句话有所疑问,dart是如何处理堆碎片以及一次分配超大内存的问题呢?

    作者回复: 1.GC会在应用的空闲时间进行内存压缩,从而较少内存碎片来优化内存。 2.任何时候只用一半,如果一半要满了,活动的对象将会被复制到另一半空间中,一半就会全部清空。

    3
    4
  • LQ
    1. 控件布局,写法和可读性给我感觉还是不怎么习惯。 2. 没有可视化的布局工具,手写布局给人感觉还是比较痛苦。 3. 不同android设备的兼容性,这个也是困扰我的问题之一,在oppo,vivo上还好好的,在华为手机上就显示不出来。

    作者回复: 这种情况一般是布局约束写的有问题,建议多试试几种不同的分辨率,也关注下运行时异常

    4
  • 公众号:业余草
    Flutter 是不是代表着未来,这是一个后起之秀啊。看的我都想写一些入门教程了!

    作者回复: 加油

    3
收起评论
显示
设置
留言
42
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部