Flutter从入门到精通之Dart语言这一篇就够了
前言
Dart 是由 Google 主导开发 ,于2011年10月公开;它的开发团队由 Google Chrome 浏览器 V8 引擎团队的领导者拉尔斯·巴克主持,目标在于成为 下一代结构化 Web 开发语言
Dart 也是一种 面向对象语言 ,但是它采用基于 类编程 ; Dart 的 设计目标 应该是既对标 Java ,也对标 JavaScrip t, Dart 在 静态语法方面 和 Java 非常相似,如 类型定义、函数声明、泛型 等,而在 动态特性方面 又和 JavaScript 很像,如 函数式特性、异步支持 等,因此 Flutte r 便成为了 跨平台 行业一个 热点
想要学习开发 Flutter 首先就要先了解 Dart 语言的基本概念 Dart 基本概念
Dart 是面向对象的语言 ,和许多面向对象语言有着很接近的语法,如果你学过 C++,C#,Java 那么你只需要很短的时间就可以掌握 Dart ,并且 Dart 语言具有以下几个特点: Dart 是谷歌开发的开源的面向客户端的开发语言 Dart 可帮助开发者开发富有表现力的,高性能的客户端应用;它具有功能强大的框架,灵活易用的工具。 客户端友好,非常适合开发移动和 Web 应用
一个简单的Dart程序大概长这个样子: // 定义函数 printInteger(int aNumber) { print("The number is $aNumber."); // 打印输出 } // 应用执行入口 main() { var number = 42; // 声明和初始化变量 printInteger(number); // 调用函数 }Dart 核心概念
如果你要深入学习 Dart 请谨记以下这些核心概念: Dart 中所有 变量 都是 对象(object) ,每个对象都是某个类的实例,包括 number, function, null 以及 object ;所有的对象都继承自 Object 这个超类。 Dart 是强类型语言 ,尽管这样,声明变量也可以不指定变量类型 Dart 可以自动推断一个变量的类型 ,就像上面的例子 变量 nunber 被自动推断为 int 类型 如果一个变量不确定是何种类型或者可以接受任何类型,那么你可以使用特殊类型: dynamic 来声明一个变量 /// Returns a Boolean representation for [arg], which must /// be a String or bool. bool convertToBool(dynamic arg) { if (arg is bool) return arg; if (arg is String) return arg == "true"; throw ArgumentError("Cannot convert $arg to a bool."); }Dart 支持泛型 ,比如: List (int类型元素的数组)、List (包含可能任何object类型元素的集合)Dart 支持顶级函数 (例如main()),以及 绑定到类或对象的函数 (分别是静态和实例方法)你还可以在函数内创建函数(嵌套函数或本地函数) 类似地, Dart支持顶级变量 ,以及 绑定到类或对象的变量 (静态和实例变量);实例变量有时称为字段或属性 与 Java,C# 等不同 , Dart 没有 public,protected 和 private 这些访问修饰符,私有变量或方法会以下划线(_)开头来表示 Dart 里的 变量或标识符 必须是以 字母或下划线 开头的 字母、下划线、数字的组合 注意区分表达式 (expressions have runtime values)和语句(statements don"t have runtime values),;比如 条件表达式: condition ? expr1 : expr2, 会返回值 expr1 或 expr2,比较下 if else 语句,不具有值;语句通常包含一个或多个表达式,但表达式不能直接包含语句 Dart 工具具有两种类型异常提醒:警告和错误 ;警告代表你的代码可能有问题,但是不会阻止程序的运行;错误分为编译错误和运行错误,前者会阻止程序的运行,后者则会在程序运行使抛出异常!
我们可以把 Dart 中的类可分为两大类: 泛型类 和 非泛型类 先说 非泛型类 也就是开发中接触最多的一般类,一般的类去定义一个变量的时候,它的 类 实际就是这个变量的类型. 例如定义一个 Student 类,我们会得到一个 Student 类型 泛型类比非泛型类要更加复杂 ,实际上 一个泛型类可以对应无限种类型 。为什么这么说,其实很容易理解;在定义泛型类的时候会定义泛型形参,要想拿到一个合法的泛型类型就需要在外部使用地方传入具体的类型实参替换定义中的类型形参 我们知道在 Dart 中 List 是一个类,它不是一个类型 ;由它可以衍生成无限种泛型类型。例如 List、List、List>、List