初识Dart

由于要学习Flutter ,了解到了Flutter是用Dart作为开发框架和widget的语言。所以要先学下Dart语言

Dart 其实并不算一门非常新的语言,最早版本发行与 2011 年 10 月,目标是取代 JavaScript 成为下一代 Web
开发语言(很显然他失败了)

为什么 Flutter 会选择 Dart?

因为它符合他们构建用户界面的方式。

中文官网呢说:Dart 是一种 易于学习、 易于扩展、并且可以部署到 任何地方 的 应用 编程 语言。 Google 使用 Dart 来开发
大型应用。

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 稳定版本为: 2.2.0

我选择的手动安装:

下载后放到D盘 解压 将里面的bin文件夹添加到环境变量的Path中去

步骤:控制面板—系统和安全—系统—高级系统设置—环境变量—系统变量


文件夹 最好不要有中文命名 !!不要学我

这样就ok啦!

编辑器我用的VScode 要下载Dart (Dart Code )插件 然后就可以创建dart文件 写代码学习语言啦~

//注释呢 还是一样的 // 或者 /**/
//数据类型:
//num 数字  String 字符串 int  bool  另外几种类型
//print()   ---相当于js里的console。log
//'...' (或者 "...") 字符串字面量。
$variableName (or ${expression})  字符串插值:在字符串字面量中引用变量或者表达式。
main()  Dart 程序执行的入口方法,每个程序都 需要 一个这样的方法。 
var  一种不指定类型声明变量的方式

重要概念

关键字

默认值
没有初始化的变量自动获取一个默认值为null,类型为数字的变量如何没有初始化其值也是null,不要忘记了数字类型也是对象。

在声明变量的时候,你可以选择加上具体 类型

Optional types(可选的类型)
在声明变量的时候,你可以选择加上具体 类型

Final and const
注:实例变量可以为 final 但是不能是 const 。
如果你以后不打算修改一个变量,使用 final 或者 const。 一个 final 变量只能赋值一次;一个 const 变量是编译时常量。 (Const 变量同时也是 final 变量。) 顶级的 final 变量或者类中的 final 变量在 第一次使用的时候初始化。

Dart的内置类型:

  • numbers
  • strings
  • booleans
  • lists (也被称之为 arrays)
  • maps
  • runes (用于在字符串中表示Unicode 字符)
  • symbols

Dart 支持两种类型的数字:

  • int 整数值
  • double 浮点数
    这两者都是num的子类。
    num 类型定义了基本的操作符,例如:±*/,abs(),ceil(),floor()…

字符串和数字之间的转换

  • int.parse()—字符串转为整数
  • double.parse()-----字符串 转为浮点数
  • int.toString()-----整数转为字符串
  • double.toStringAsFixed ------浮点数保留几位

整数类型支持传统的位移操作符,(<<, >>), AND (&), 和 OR (|) 。
(这块我还理解的不透彻 好想问各种why???)

  • assert((3 << 1) == 6); // 0011 << 1 == 0110
  • assert((3 >> 1) == 1); // 0011 >> 1 == 0001
  • assert((3 | 4) == 7); // 0011 | 0100 == 0111

字符串
Dart 字符串是 UTF-16 编码的字符序列。 可以使用单引号或者双引号来创建字符串(这个应该没啥好说的吧~)

  • const str1 = 'single lady’

  • const str 2= “dsfsdf”

  • 也可以在字符串中使用表达式,用法是这样的: ${expression}。如果表达式是一个比赛服,可以省略 {}。 如果表达式的结果为一个对象,则 Dart 会调用对象的 toString() 函数来获取一个字符串。

  • 和js 一样也可以使用+操作符来吧

  • 使用三个单引号或者双引号也可以 创建多行字符串对象:

  • eg: var s1 = ‘’‘You can createm ulti-line strings like this one.’’’;

  • 通过提供一个 r 前缀可以创建一个 “原始 raw” 字符串:

  • eg:var s = r"I am yannanna";

Boolean(布尔值)
true / false

Lists(列表)

Maps(键值对相关的对象)
键和值可以是任何类型的对象。每个 键 只出现一次, 而一个值则可以出现多次。

  • eg: var gifts = {
    // Keys Values
    ‘first’ : ‘partridge’,
    ‘second’: ‘turtledoves’,
    ‘fifth’ : ‘golden rings’
    };

使用 Map 构造函数也可以实现同样的功能

  • eg: var gifts = new Map();
    gifts[‘first’] = ‘partridge’;
    gifts[‘second’] = ‘turtledoves’;
    gifts[‘fifth’] = ‘golden rings’;

Runes
在 Dart 中,runes 代表字符串的 UTF-32 code points

Symbols
一个 Symbol object 代表 Dart 程序中声明的操作符或者标识符。

Functions(方法)

The main() function(入口函数)
每个应用都需要有个顶级的 main() 入口方法才能执行。 main() 方法的返回值为 void 并且有个可选的 List 参数。

下面是一个 web 应用的 main() 方法:

void main() {
querySelector("#sample_text_id")
…text = “Click me!”
…onClick.listen(reverseText);
}

Anonymous functions(匿名方法)

  • eg:
    printElement(element) {
    print(element);
    }
    var list = [1, 2, 3];

Functions as first-class objects(一等方法对象)

Lexical scope(静态作用域)

Lexical closures(词法闭包)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值