Flutter 技术入门与实战 (24):开启 Flutter 之旅 3.1

阅读数:5 2019 年 12 月 15 日 18:48

Flutter技术入门与实战(24):开启Flutter之旅 3.1

(Dart 重要概念与常用开发库)

内容简介
第 1 章介绍 Flutter 的基本概念,并搭建第 yi 个 Flutter 程序,来感受一下 Flutter 之美。
第 2 章介绍几个重要知识点,如入口程序、Material Design、Flutter 主题、无状态组件和有状态组件、使用包资源、Http 请求。
第 3 章简单介绍 Dart 语言。Dart 语言是 Flutter SDK 指定的语言,我们很有必要补充一下它的基础知识,包括语法特性、基本语句、面向对象等。
第 4 章介绍常用组件。Flutter 里有一个非常重要的核心理念:一切皆为组件,本章主要讲解开发中用得 * 频繁的组件,如容器组件、图片组件、文本组件、图标组件和表单组件等。
第 5 章介绍 Material Design 风格的组件,Material Design 风格是一种非常有质感的设计风格,并提供一些默认的交互动画。本章将分类介绍这些组件。
第 6 章介绍 Cupertino 风格的组件,这是一类 iOS 风格的组件,如 CupertinoTabBar、CupertinoPageScaffold、CupertinoTabScaffold、CupertinoTabView 等。
第 7 章介绍页面布局的基础知识和技巧,如基础布局处理、宽高尺寸处理、列表及表格布局等,* 后通过一个综合布局示例来演示如何编写复杂的页面。
第 8 章介绍如何处理手势,如轻击、拖动和缩放等。Flutter 中提供 GestureDetector 进行手势检测,并为手势检测提供了相应的监听。
第 9 章介绍如何加载、处理、展示资源和图片,如添加资源和图片、自定义字体等。
第 10 章介绍路由及导航是如何处理的,包括页面的渲染以及数据传递。
第 11 章介绍组件装饰和视觉效果的处理,如 Opacity(透明度处理)、DecoratedBox(装饰盒子)、RotatedBox(旋转盒子)、Clip(剪裁处理)和 CustomPainter(自定义画板)。
第 12 章介绍动画效果的制作,包含两个动画组件的使用:用 AnimatedOpacity 实现渐变效果、用 Hero 实现页面切换动画。
第 13 章介绍 Flutter 插件开发的入门知识。Flutter 插件可以和原生程序打交道,比如调用蓝牙、启用 WIFI、打开手电筒,等等。
第 14 章介绍开发工具及使用技巧,介绍几款常用的 IDE 工具,从代码的编写、辅助功能、程序调试、性能分析等多方面讲解工具及使用技巧。
第 15 章介绍测试与发布应用,包括:测试应用、发布 Android 版和 iOS 版 App。
第 16 章通过一个综合案例介绍如何使用 Flutter 实现即时通讯 App 的界面。

Dart 诞生于 2011 年 10 月 10 日,谷歌 Dart 语言项目的领导人 Lars Bak 在丹麦举行的 Goto 会议上宣布,Dart 是一种“结构化的 Web 编程”语言,Dart 编程语言在所有现代浏览器和环境中提供高性能。

Dart 虽然是谷歌开发的计算机编程语言,但后来被 ECMA 认定为标准。这门语言用于 Web、服务器、移动应用和物联网等领域的开发,是宽松开源许可证(修改的 BSD 证书)下的开源软件。

Dart 最新的版本是 Dart2,Dart 2 是一款高效、简洁、已通过实战检验的语言,能够应对现代应用程序开发的挑战。Dart 2 大大加强和精简了类型系统,清理了语法,并重建了大部分开发工具链,使移动和 Web 开发变得更加愉快和高效。Dart 2 还融合了包括 Flutter、AdWords 和 AdSense 等工具开发者对该语言早期使用的经验教训,以及针对客户反馈的成千上万大大小小的问题进行了改进。

那么 Flutter 和 Dart 有什么关系?确实有关系。早期的 Flutter 团队评估了十多种语言才选择了 Dart,因为它符合构建用户界面的方式。以下是 Flutter 团队看重 Dart 语言的部分特性:

  • Dart 是 AOT(Ahead Of Time)编译的,编译成快速、可预测的本地代码,使 Flutter 几乎都可以使用 Dart 编写。这不仅使 Flutter 变得更快,而且几乎所有的组件(包括所有的小部件)都可以定制。
  • Dart 也可以 JIT(Just In Time)编译,开发周期异常快,工作流颠覆常规(包括 Flutter 流行的亚秒级有状态热重载)。
  • Dart 可以更轻松地创建以 60fps 运行的流畅动画和转场。Dart 可以在没有锁的情况下进行对象分配和垃圾回收。就像 JavaScript 一样,Dart 避免了抢占式调度和共享内存(因而也不需要锁)。由于 Flutter 应用程序被编译为本地代码,因此不需要在领域之间建立缓慢的桥梁(例如,JavaScript 到本地代码)。它的启动速度也快得多。
  • Dart 使 Flutter 不需要单独的声明式布局语言(如 JSX 或 XML),或单独的可视化界面构建器,因为 Dart 的声明式编程布局易于阅读和可视化。所有的布局使用一种语言,聚集在一处,Flutter 很容易提供高级工具,使布局更简单。
  • 开发人员发现 Dart 特别容易学习,因为它具有静态和动态语言用户都熟悉的特性。

并非所有这些功能都是 Dart 独有的,但 Dart 将这些功能组合得恰到好处,使 Dart 在实现 Flutter 方面独一无二。因此,没有 Dart,很难想象 Flutter 像现在这样强大。

当你想创建移动 App、Web App、Command-line 应用时,都可以使用 Dart 语言,如图 3-1 所示。

Flutter技术入门与实战(24):开启Flutter之旅 3.1

图 3-1 Dart 支持的平台

Dart 重要的概念如下:

  • 所有的东西都是对象,无论是变量、数字、函数等都是对象。所有的对象都是类的实例。所有的对象都继承自内置的 Object 类。这点类似于 Java 语言“一切皆为对象”。
  • 程序中指定数据类型使得程序合理地分配内存空间,并帮助编绎器进行语法检查。但是,指定类型不是必须的。Dart 语言是弱数据类型。
  • Dart 代码在运行前解析。指定数据类型和编译时的常量,可以提高运行速度。
  • Dart 程序有统一的程序入口:main()。这一点与 Java、C / C++ 语言相像。
  • Dart 没有 public、protected 和 private 的概念。私有特性通过变量或函数加上下划线来表示。
  • Dart 的工具可以检查出警告信息(warning)和错误信息(errors)。警告信息只是表明代码可能不工作,但是不会妨碍程序运行。错误信息可以是编译时的错误,也可能是运行时的错误。编译时的错误将阻止程序运行,运行时的错误将会以异常(exception)的方式呈现。
  • Dart 支持 anync/await 异步处理。
  • 关键字(56 个)如下:abstract,do,import,super,as,dynamic,in,switch,assert,else,interface,sync*,enum,implements,is,this,async*,export,library,throw,await,external,mixin,true,break,extends,new,try,case,factory,null,typedef,catch,false,operator,var,class,final,part,void,const,finally,rethrow,while,continue,for,return,with,covariant,get,set,yield*,default,if,static,deferred。

Dart 语言常用库如表 3-1 所示。

表 3-1 Dart 语言常用库
包名 描述
dart:async 异步编程支持,提供 Future 和 Stream 类
dart:collection 对 dart:core 提供更多的集合支持
dart:convert 不同类型(JSON,UTF-8)间的字符编码、解码支持
dart:core Dart 语言内建的类型、对象以及 dart 语言核心的功能
dart.html 网页开发用到的库
dart.io 文件读写 I/O 相关操作的库
dart:math 数字常量及函数,提供随机数算法
dart:svg 事件和动画的矢量图像支持

其中如下三个开发库的使用频率最高:

  • dart:core:核心库,包括 strings、numbers、collections、errors、dates、URIs 等。
  • dart:html:网页开发里 DOM 相关的一些库。
  • dart:io:I/O 命令行使用的 I/O 库。

dart:core 库是 Dart 语言初始已经包含的库,其他的任何库在使用前都需要加上 import 语句。例如,使用 dart:html 可以使用如下的命令:

复制代码
import 'dart:html';

使用官方提供的 pub 工具可以安装丰富的第三方库。第三方库的地址为:pub.dartlang.org。

Flutter技术入门与实战(24):开启Flutter之旅 3.1

购书地址 https://item.jd.com/12526484.html?dist=jd

评论

发布