Dart介绍

Dart 是一种用于开发Android、IOS、 Web和桌面应用的开源编程语言。

它是由Google开发的。

Dart 语法类似于 C、javascript 和 java 语言。

先决条件

该教程假设您有一定的编程基础,在此编程基础上您可以很快的掌握Dart语言。

在开始本教程之前,我们假设您已经安装了 Dart SDK(如果您没有安装 Dart SDK,请在开始之前安装它)以及必须在您的计算机上设置本地编程环境。
链接:https://dart.cn/get-dart

Dart关键字

Dart关键字共有60多个,在我的另一篇博客做了非常详细的介绍。了解一门语言的关键字,可以快速掌握该语言的语法,非常非常重要关键。
链接:https://blog.csdn.net/weixin_44758662/article/details/124937490

变量

定义变量

var name = 'Bob';

指定类型:

String name = 'Bob';

Final 和 Const

如果更改一个变量,可以使用关键字 final 或者 const 修饰变量,这两个关键字可以替代 var 关键字或者加在一个具体的类型前。一个 final 变量只可以被赋值一次;一个 const 变量是一个编译时常量(const 变量同时也是 final 的)。顶层的 final 变量或者类的 final 变量在其第一次使用的时候被初始化。

final String name = 'Bobby';

Dart数据类型

Types KeyWork Description
数字 int, double, num Dart 中的数字用于表示数字文字
字符串 String 字符串表示一个字符序列
布尔值 bool 它表示布尔值 true 和 false
列表 List 它是一组有序的对象
Map Map 它将一组值表示为键值对

1.数字

数字是用来保存数值的数据类型

int 数据类型用于表示整数。
double 数据类型用于表示 64 位浮点数。
num 类型是 int 或 double 类型。

void main() {int a = 2;             double b = 1.5;
}

2.字符串

用来表示一个字符序列。它是一个 UTF-16 代码单元序列。关键字 String 用于表示字符串文字。字符串值嵌入在单引号或双引号中。

void main() {String str1= 'good'; String str2= "good";
}

3.布尔值

表示布尔值真假,用关键字 bool 表示。

void main() {String str = 'Coding is '; String str1 = 'Fun'; bool val = (str==str1);print (val);
}

4.列表

列表数据类型类似于其他编程语言中的数组。列表用于表示对象的集合。它是一组有序的对象。 用List表示。

void main()
{ List<String>  list= [];list[0] = 'Good'; list[1] = 'CSDN';
}

5. Map

Map对象是一个键值对。地图上的键和值可以是任何类型。它是一个动态集合。

void main() { Map map = new Map(); map['First'] = 'First'; map['Second'] = 'Second'; map['Third'] = 'Third';print(map);
}

注意: 如果未指定变量的类型,则变量的类型为dynamic。动态关键字显式用作类型注释。

Dart运算符

运算符是用于对操作数执行某些操作的特殊符号。Dart 有许多内置运算符,可用于执行不同的功能,例如,‘+’ 用于添加两个操作数。运算符旨在对一个或两个操作数进行操作。
以下是 Dart 中的各种类型的运算符:
算术运算符
关系运算符
类型测试运算符
赋值运算符
逻辑运算符
条件运算符
级联符号运算符

1.算术运算符

此类运算符包含用于对操作数执行算术运算的运算符。它们是二元运算符,即它们作用于两个操作数。

符号 作用
+
-
*
/
~/ 除然后去掉小数点
% 取余
void main()
{int a = 2;int b = 3;var c = a + b;var d = a - b;
}

2.算术运算符

此类运算符包含用于对操作数执行关系运算的运算符。并将结果作为布尔表达式给出。

符号 作用
> 大于
< 小于
>= 大于或等于
<= 小于或等于
== 等于
!= 不等于
void main()
{int a = 2;int b = 3;bool c = a > b;bool d = a < b;
}

3.类型运算符

符号 作用
is 如果对象具有特定类型,则将布尔值 true 作为输出
is! 如果对象具有特定类型,则将布尔值 false 作为输出
as 类型转换
void main()
{String a = 'Good';double b = 3.3;print(a is String);print(b is !int);
}

4.赋值运算符:

符号 作用
= 用于为表达式或变量赋值
??= 仅当它为空时才分配该值
void main()
{int a = 5;int b = 7;var c = a * b; print(c);var d;d ? ? = a + b; print(d);d ? ? = a - b;
}

输出

35
12
12

5.逻辑运算符

此类运算符包含用于在逻辑上组合两个或多个条件的运算符

符号 作用
&& 如果两者都为真,则返回真
|| 如果其中一个条件为真,则返回真
! 反转结果
void main()
{int a = 5;int b = 7;bool c = a > 10 && b < 10;print(c);bool d = a > 10 || b < 10;print(d);bool e = !(a > 10);print(e);
}

6. 条件运算符

符号 作用
bool? a:b 如果条件为真,则执行 a,否则执行 b
a??b 如果a不为 null,则返回其值,否则返回b值。
void main()
{int a = 5;int b = 7;var c = (a < 10) ? "Statement is Correct, Geek" : "Statement is Wrong, Geek";print(c);int n;var d = n ? ? "n has Null value";print(d);n = 10;d = n ? ? "n has Null value";print(d);
}

输出

Statement is Correct, Geek
n has Null value
10

7.级联符号运算符

此类运算符允许您对同一元素执行一系列操作。它允许您对同一个对象执行多个方法。

符号 作用
它用于对同一个对象执行多个方法
void main()
{User user = new User();user..setName("userName")..setAge(15);
}

Dart流程控制语句

if
if else
if else if else
switch case

Dart循环语句

for
while
do while

中断循环

break
continue

Dart函数

函数让您可以包装一组语句,这意味着执行任何特定任务并为其命名,以便以后可以从程序中的任何位置调用它。函数可以很容易地将整个程序划分为执行该程序特定任务的子单元,这样它就增强了模块化方法并增加了程序的代码可重用性。我们在函数调用中传递信息作为其参数,该函数可以将某个值返回到它调用的位置,也可以不返回任何值。

函数

格式:

returnType funcName (parameter)
{return value;
}

例子:

int add(int n1, int n2){int result;result = n1+n2;return result;
}

可选参数

在 Dart 中,我们可以将任何参数设置为可选;即使未提供这些参数的值,它也允许调用/执行带有可选参数(如果有)的函数。可以通过附加问号及其名称来将参数设置为可选。

1.可选位置参数

可选的位置参数可以通过用逗号分隔并包含在方括号 ([]) 中的单个参数来指定。调用定义了可选位置参数的函数可以指定可变数量的参数。

void functionName(param1, [param2, param3]) { }
void main() { testParam(12);testParam(123,21);
}
testParam(p1,[o1]) { print("Param Value Is : ${p1} and Option Param Valus Is : ${o1}");
}

2.可选命名参数

命名的位置参数可以通过用逗号分隔并包含在大括号 ({ }) 中的单个参数名称来指定。

void functionName(param1, {param2, param3}) {}
void main() { testParam(12);testParam(123,np1:10);testParam(123,np2:20);testParam(123,np1:10,np2:20);
}
testParam(p1,{np1, np2}) { print("Param Value Is : ${p1}");print("Named Param 1 Valus Is : ${np1}"); print("Named Param 1 Valus Is : ${np2}");
}

默认参数值

functionName(param1,param2= default_value) {}

Dart对象

对象

class Point {double? x; // Declare instance variable x, initially null.double? y; // Declare y, initially null.
}void main() {var point = Point();point.x = 4; // Use the setter method for x.assert(point.x == 4); // Use the getter method for x.assert(point.y == null); // Values default to null.
}

构造函数

声明一个与类名一样的函数即是一个构造函数

  Point(this.x, this.y);

声明式构造函数

可以为一个类声明多个命名式构造函数来表达更明确的意图

 Point.origin(): x = xOrigin,y = yOrigin;

枚举

枚举类型是一种特殊的类型,也称为 enumerations 或 enums,用于定义一些固定数量的常量值。

enum Color { red, green, blue }

使用

Color.red

异常

Dart 代码可以抛出和捕获异常。异常表示一些未知的错误情况,如果异常没有捕获则会被抛出从而导致抛出异常的代码终止执行。

与 Java 不同的是,Dart 的所有异常都是非必检异常,方法不必声明会抛出哪些异常,并且你也不必捕获任何异常。

try {breedMoreLlamas();
} on OutOfLlamasException {buyMoreLlamas();
} on Exception catch (e) {print('Unknown exception: $e');
} catch (e) {print('Something really unknown: $e');
} finally {cleanLlamaStalls();
}

如上述代码所示可以使用 on 或 catch 来捕获异常,使用 on 来指定异常类型,使用 catch 来捕获异常对象,两者可同时使用。

无论是否抛出异常,finally 语句始终执行,如果没有指定 catch 语句来捕获异常,则异常会在执行完 finally 语句后抛出

抽象类

使用关键字 abstract 标识类可以让该类成为 抽象类,抽象类将无法被实例化。抽象类常用于声明接口方法、有时也会有具体的方法实现。如果想让抽象类同时可被实例化,可以为其定义 工厂构造函数。

抽象类常常会包含 抽象方法。下面是一个声明具有抽象方法的抽象类示例:

abstract class AbstractContainer {void updateChildren(); // Abstract method.
}

隐式接口

每一个类都隐式地定义了一个接口并实现了该接口,这个接口包含所有这个类的实例成员以及这个类所实现的其它接口。如果想要创建一个 A 类支持调用 B 类的 API 且不想继承 B 类,则可以实现 B 类的接口。

一个类可以通过关键字 implements 来实现一个或多个接口并实现每个接口定义的 API:

class Person {final String _name;Person(this._name);String greet(String who) => 'Hello, $who. I am $_name.';
}class Impostor implements Person {String get _name => '';String greet(String who) => 'Hi $who. Do you know who I am?';
}String greetBob(Person person) => person.greet('Bob');void main() {print(greetBob(Person('Kathy')));print(greetBob(Impostor()));
}

如果需要实现多个类接口,可以使用逗号分割每个接口类:

class Point implements Comparable, Location {...}

扩展一个类

使用 extends 关键字来创建一个子类,并可使用 super 关键字引用一个父类:

class Television {void turnOn() {_illuminateDisplay();_activateIrSensor();}
}class SmartTelevision extends Television {void turnOn() {super.turnOn();_bootNetworkInterface();_initializeMemory();_upgradeApps();}
}

Flutter Dart语言入门一篇就够了相关推荐

  1. 新手入门一篇就够:从零开发移动端IM

    一.前言 IM发展至今,已是非常重要的互联网应用形态之一,尤其移动互联网时代,它正以无与论比的优势降低了沟通成本和交流门槛,对各种应用形态产生了深远影响. 做为IM开发者或即将成为IM开发者的技术人员 ...

  2. Dart语言入门介绍

    Dart诞生于2011年10月10日,google Dart语言项目的领导人Lars Bak在丹麦举行的Goto会议上宣布, Dart是一种结构化的web编程语言,它被ECMA认定为标准,用于Web. ...

  3. c语言tab什么意思_C语言入门 — 一篇最全的C语言基础知识。

    c语言入门 C语言一经出现就以其功能丰富.表达能力强.灵活方便.应用面广等特点迅速在全世界普及和推广.C语言不但执行效率高而且可移植性好,可以用来开发应用软件.驱动.操作系统等.C语言也是其它众多高级 ...

  4. 【零基础】入门C语言这一篇就够了

    初识C语言 1. 什么是C语言? 2. 第一个C语言程序 2.1 如何写代码 2.2 运行代码 3. 数据类型 3.1 为什么出现这么多类型? 3.2 如何使用数据类型 3.3 数据类型的大小 4. ...

  5. 从新手到Flutter架构师,一篇就够!学习路线+知识点梳理

    前言 IT行业薪水高,这是众所周知的,所以很多人大学都选择IT相关专业,即使非该专业的人,毕业了也想去一个培训机构镀镀金,进入这一行业. 但是有关这个行业35岁就退休的说法,也一直盛传. 加上这几年不 ...

  6. 【原创】新手入门一篇就够:从零开发移动端IM

    一.前言 IM发展至今,已是非常重要的互联网应用形态之一,尤其移动互联网时代,它正以无与论比的优势降低了沟通成本和沟通代价,对各种应用形态产生了深远影响. 做为IM开发者或即将成为IM开发者的技术人员 ...

  7. 从新手到Flutter架构师,一篇就够!这原因我服了

    咸鱼翻身不断上演 2018年5月份,北京,在所谓的互联网寒冬里,一个普通二本的学生,在小公司工作一年后,跳槽拿到了百度的offer,月薪从9k变为17k,涨薪幅度接近100%. 2018年底,上海,一 ...

  8. 第1章 Kali Linux入门 一篇就够了

    文章目录 第1章 Kali Linux入门 1.1 Kali的发展简史 1.2 Kali Linux工具包 1.3 下载Kali Linux 1.4 使用Kali Linux 1.4.1 Live D ...

  9. 从新手到Flutter架构师,一篇就够!深度解析,值得收藏

    前言 今天想停下代码,写点脑袋里不断浮现出来的一些看法. 也就是最近在微博和知乎上老看到"互联网寒冬"的说法.要么是看到啥公司薪水无法如期发放了,要么是看到别人说什么"裁 ...

最新文章

  1. 【Linux 内核 内存管理】虚拟地址空间布局架构 ① ( 虚拟地址空间布局架构 | 用户虚拟地址空间划分 )
  2. C++如何实现DNS域名解析转
  3. [PAPER-RECORD]
  4. STM32跑分?看看你的能跑多少分!
  5. 通过网络使用其他计算机串口,串口如何连接两台电脑?两台电脑不能通过网线,仅能通过串口或者并口连接...
  6. 横空出世,席卷互联网--评微软等公司数据结构和算法面试100题
  7. 面向对象【day07】:新式类和经典类(八)
  8. python 复习计划
  9. Eclipse修改代码字体
  10. rtk定位权限_无人机中的GPS定位、DGPS差分定位、RTK差分定位
  11. 如何判断一个数是否是质数(C语言)-超详细
  12. 青少年CTF-Web-CheckMe01
  13. 数字特征值-对数字求特征值是常用的编码算法,奇偶特征是一种简单的特征值
  14. 计算机access分数比例,[access查询]关于分数段统计问题
  15. 新西兰.net和java_使用Linux容器分析气候变化和土壤对新西兰农作物的影响
  16. 2012年国内薪资最高的IT公司排行
  17. 烂笔头笔记:Charles工具在Windows系统中闪退(无法打开)的问题修复
  18. JN516中断简单应用
  19. python的4种数据结构
  20. STM32CUBEMX(2)--USART通过DMA方式接收不定长数据

热门文章

  1. IT 人的纠结:去大公司还是去小公司?
  2. 【SVN】win10下SVN图标不显示
  3. 导入博客等渠道文章到公众号并进行格式布局-详细教程
  4. 【重点推荐】iOS开发之芝麻信用SDK的超详细使用教程
  5. 高通-LCD驱动框架简述
  6. Android学习之优化美女图片浏览器
  7. Johnson全源最短路算法
  8. Uni-app 自定义浮层dialog
  9. DC EP要统一“ 世界度量衡”,数字货币打开财富大门
  10. studio3T连接不上mongoDB