Flutter入门学习(二)— Dart语言基础

一、什么是Dart?为什么使用它?

Dart 是一个由谷歌开发的通用编程语言,后来被 Ecma (Ecma-408)批准为标准。它用于构建 web、服务器、桌面和移动应用程序。

Dart 是一种面向对象的、类定义的、垃圾回收语言 ,使用C 样式的语法可以随意地转换为 JavaScript。 它支持接口、 mixin、抽象类、具体化泛型、静态类型等。
在这里插入图片描述

二、Dart部分特性

  • Dart是AOT(Ahead Of Time)编译的,可编译成快速,可预测的本地代码

  • Dart可以JIT(Just In Time)编译,开发周期快,为Flutter热重载提供基础

  • Dart可以轻松创建60fps运行的流畅动画和转场

  • Dart的声明式编程布局,易于阅读和可视化,不需要单独的声明式布局语言,如:XML,JSX

  • Dart非常易于学习,具有静态和动态语言,编程人员都熟悉的特性

三、Dart重要概念

  • 所有东西都是对象,无论是变量,数字,函数,null等都是对象,所有对象都Object类的子类

  • Dart语言是强类型编程,一旦确定类型,则不可改变变量类型,编译时会进行语法检查,但Dart允许弱类型语言式的编程

  • Dart代码在运行前解析,指定数据类型和编译时常量,可以提高运行速度

  • Dart语言的统一入口是main函数

  • Dart的私有特性是在变量或者函数名前面加上下划线 _

  • Dart 支持async/await异步处理

Dart关键字

在这里插入图片描述

Dart内置库

在这里插入图片描述

四、类型系统

Dart 是类型安全的: 它结合使用静态类型检查和运行时检查,以确保变量的值总是与变量的静态类型匹配。 尽管类型是强制的,但是类型声明是可选的,因为 Dart 会在编译时执行类型推断。

基本数据类型

在这里插入图片描述

基本语法

变量声明

 /// 定义基本类型 , 使用var关键字进行类型定义时 ,定义并初始化时,后续赋值只能是相同类型。
/// 使用var 定义,不初始化 , 则后续可以任意类型赋值, 最终类型是dynamic类型,dynamic类型,不会检测成员,Object定义的变,会检测对象成员。
var variable = '12;
/// 使用确定类型定义变量 , String 类型 , 使用确定类型赋值必须是相同类型
String name = 'zeno'; 

一切变量的初始化都是null,包括bool类型初始化也是null

常量声明

/// 使用const 定义的常量是不可变的, 需要定义并赋值,常量定义的集合,都是只读的,特性会传递到子元素,在内存中会复用相同内容对象
const PI = 3.1454567; 
/// 使用final 定义的变量, 只能赋值一次,只作用在自身
final DE = 123231313; 

常用数据类型及运算符

Dart中的数据类型,基本和Java相似,都有int,double,String等类型,Dart与Java类型的区别是,没有更小的类型,像short,float,char等类型。在Dart中数字类型的可以使用num类型来表示,num是int,double的基类,在Dart中,所有类型都是对象,不需要像Java一样拆箱装箱的操作。例如:String age = 20.toString();数字也是对象,可以直接进行方法操作。
在这里插入图片描述

集合—List

var ls = List(); // 不推荐
var ls = <String>[]; // 推荐
Ls2.add(‘one’);
Ls2.addAll([1,2,3]);
Ls2.add(‘two’);
Ls2.remove(‘one’);

集合—Map

var personInfo = Map<String,Object>(); // 不推荐
var personInfo = <String,Object>{}; // 推荐
personInfo[‘name’] = ‘zeno’;
personInfo[‘age’] = 18;

枚举

枚举类型是一种特殊的类,通常用来表示相同类型的一组常量。使用关键字enum定义枚举。枚举的每一个值都有一个index属性,index从0开始计数。枚举不能被继承,不能创建实例。

enum ResponseState{
    Success,
    Error,
    Failure
}

时间处理

DateTime 对象代表某个时刻。时区是 UTC 或者 本地时区。

/// 获取当前时间 2019-03-04 14:48:28.948690
DateTime.now();
/// 创建一个指定年月日的DateTime对象, 后面可以继续添加时分秒毫秒等
/// 2019-03-03 00:00:00.000
DateTime(2019,3,3);
/// 解析日期字符串
DateTime.parse(2019-03-03 20:30:00);
/// 解析时间戳
DateTime.fromMillisecondsSinceEpoch(1551616200000);

五、面向对象

类定义及接口

Dart 是一个面向对象编程语言,同时支持基于 Mixin 的继承机制。 每个对象都是一个类的实例,所有的类都继承于Object,基于 Mixin 的继承 意味着每个类(Object 除外)都只有一个超类,一个类的代码可以在其他多个类继承中重复使用,从而达到多重继承的效果。

/// 定义类
class Person{
    String name;
    int age;
    Person(this.name,this.age);
}
/// 定义接口
abstract class Animal{
     void eat();
}

异常

Dart 异常是非检查异常。 方法不一定声明了他们所抛出的异常, 并且你不要求捕获任何异常。 Dart 代码可以 抛出任何非 null 对象为异常,不仅仅是实现了 Exception 或者 Error 的对象。

/// 抛出类型 , 与Java抛出异常类似
throw new FormatException('Expected at least 1 section’);
/// 抛出任意对象
throw 'Out of llamas!;

/// 捕获异常
try{
}catch(){
}finally{}
发布了37 篇原创文章 · 获赞 35 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/jaynm/article/details/104994604