Dart 总结
Posted 王睿丶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dart 总结相关的知识,希望对你有一定的参考价值。
文章目录
- 1、Dart 介绍
- 2、Dart 安装
- 3、知识点
- 3.1、Dart介绍、Dart环境搭建、Dart开发工具
- 3.2、变量、常量、命名规则、入口方法的两种定义方式
- 3.3、常用数据类型、字符串类型、数值类型、布尔类型、List集合类型、Maps类型
- 3.4、运算符、条件判断、类型转换
- 3.5、自增自减运算符、for、while、do...while循环、continue、break、多维列表循环
- 3.6、集合类型List Set Map详解 以及循环语句 forEach map where any every
- 3.7、函数的定义 可选参数 默认参数 命名参数
- 3.8、函数、箭头函数 匿名函数 闭包等
- 3.9、对象、类
- 3.10、类 静态成员 操作符 类的继承
- 3.11、抽象类 多态 以及接口
- 3.12、一个类实现多个接口 以及Dart中的Mixins
- 3.13、泛型、泛型方法 、泛型类、泛型接口
- 3.14、库 自定义库、系统库、第三方库
- 4、常见问题
1、Dart 介绍
一丶Dart 概述
- Dart 是 Google 发布的一门开源编程语言
- Dart 初期目标是称为下一代的 web 开发语言
- Dart 目前已可用于全平台开发
- Dart 是一门面向对象的编程语言
二丶为什么使用Dart
-
高校
Dart 语法清晰简洁,工具简单而强大。输入检测可帮助您尽早识别细微错误。Dart 拥有久经考验的 核心库 和一个已经拥有数以千计的 packages 生态系统 -
快速
Dart 提供提前编译优化,以在移动设备和 web 上实现可预测的高性能和快速启动。 -
可移植
Dart 可以编译成 ARM 和 x86 代码,因此 Dart 移动应用程序可以在 ios,android 及 更高版本上实现本地运行。对于 web 应用程序,Dart 可以转化为 javascript。 -
易学
Dart 是面向对象的编程语言,语法风格对于许多现有的开发人员来说都很熟悉。如果您已经了解C++,C# 或 Java,那么使用 Dart 也就是分分钟的事情。 -
响应式
Dart 可以便捷的进行响应式编程。由于快速对象分配和垃圾收集器的实现,对于管理短期对象(比如 UI 小部件),Dart 更加高效。Dart 可以通过 Future 和 Stream 的特性和 API 实现异步编程。
三丶Dart 语言特性
- 单进程异步事件模型
- 强类型,可以类型推断
- DartVM,具有极高的运行效率和优秀的代码运行优化,根据早前的基准测试,性能比肩 Java7 的 JVM
- 独特的隔离区(lsolate),可以实现多线程
- 面向对象编程,一切数据类型均派生自Object
- 运算符重载,泛型支持
- 强大的 Future 和 Stream 模型,可以简单实现高效的代码
- Minix 特性,可以更好的实现方法复用
- 全平台语言,可以很好地胜任移动和前后端的开发
- 在语法上,Dart 提供了很多便捷的操作,可以明显减少代码量。比如字符连接,可以直接“my name is $name,age is
$age”,无需+号拼接,也无需做类型转换
四丶应用场景
-
服务端开发
1、命令行应用
2、HTTP 服务端 -
Web 开发
-
Android 和 iOS 开发
五丶版本
- Dart1.x 为稳定版本
- Dart2.x 目前为开发版本
- 课程以 Dart2 最新版本进行讲解
六丶Dart 内置库
包名 | 描述 |
---|---|
dart:async | 异步编程,提供Future,Stream 类 |
dart:collection | 集合 |
dart:convert | 不同类型的字符编码解码 |
dart:core | Dart 语言核心功能,内置类型 |
dart:html | 网页开发用到的库 |
dart:io | 文件读写,IO相关 |
dart:math | 数字常量及函数,随机算法等 |
dart:svg | 事件和动画矢量图支持 |
七丶输出“Hello World”
main(){
print('你好dart');
}
八丶学习资料
2、Dart 安装
一丶 下载Dart(含SDK)
https://gekorm.com/dart-windows/
二丶 设置环境变量
【1】
Name:DART_SDK
Key:D:\\program\\Dart\\Dart\\dart-sdk
【2】
Name:Path
Key:D:\\program\\Dart\\Dart\\dart-sdk;
三丶 检测是是否成功
【1】dart --version
四丶 安装VSCode
【1】
可以参考我的博文:如何下载Visual Studio Code及配置教程
【2】
点开左边工具栏,第四个,搜索dart,下载这个插件
下载Code Runner插件
【3】写代码,运行
3、知识点
3.1、Dart介绍、Dart环境搭建、Dart开发工具
一丶 Dart介绍
Dart是由谷歌开发的计算机编程语言,它可以被用于web、服务器、移动应用 和物联网等领域的开发。
Dart诞生于2011年,号称要取代JavaScript。但是过去的几年中一直不温不火。直到Flutter的出现现在被人们重新重视。
要学Flutter的话我们必须首先得会Dart。
官网:https://dart.dev/
二丶Dart环境搭建
1丶 下载Dart(含SDK)
https://gekorm.com/dart-windows/
2丶 设置环境变量
【1】
Name:DART_SDK
Key:D:\\program\\Dart\\Dart\\dart-sdk
【2】
Name:Path
Key:D:\\program\\Dart\\Dart\\dart-sdk;
3丶 检测是是否成功
【1】dart --version
4丶 安装VSCode
【1】
可以参考我的博文:如何下载Visual Studio Code及配置教程
【2】
点开左边工具栏,第四个,搜索dart,下载这个插件
下载Code Runner插件
【3】写代码,运行
三丶 Dart开发工具
Dart的开发工具有很多: IntelliJ IDEA 、 WebStorm、 Atom、Vscode等
这里我们主要给大家讲解的是如果在Vscode中配置Dart。
1、找到vscode插件安装dart
2、找到vscode插件安装code runner Code Runner 可以运行我们的文件
3.2、变量、常量、命名规则、入口方法的两种定义方式
一丶 入口方法的两种定义方式
方式一:
main(){
print('你好dart');
}
方式二:
void main(){
print('你好dart');
}
二丶 变量
1、变量的概念
dart是一个强大的脚本类语言,可以不预先定义变量类型 ,自动会类型推倒
dart中定义变量可以通过var关键字可以通过类型来申明变量
如:
var str='this is var';
String str='this is var';
int str=123;
注意: var 后就不要写类型 , 写了类型 不要var 两者都写 var a int = 5; 报错
2、定义变量
void main(){
var str='你好dart';
var myNum=1234;
print(str);
print(myNum);
//字符串
String str='你好dart';
print(str);
//数字类型
int myNum=12354;
print(myNum);
//dart里面有类型校验
var str='';
str=1234;
print(str);
String str="2131242";
print(str);
int myNum=1243214;
print(myNum);
三丶 常量
1、常量的概念
final 和 const修饰符
const值不变 一开始就得赋值
final 可以开始不赋值 只能赋一次 ; 而final不仅有const的编译时常量的特性,最重要的它是运行时常量,并且final是惰性初始化,即在运行时第一次使用前才初始化
永远不改量的量,请使用final或const修饰它,而不是使用var或其他变量类型。
2、定义常量
void main(){
var str='this is a str';
str='你好 str';
print(str);
int myNum=1234;
myNum=4567;
print(myNum);
//const常量
const PI=3.14159;
PI=123.1243; //错误的写法 常量不可以修改
print(PI);
// final 常量
final PI=3.14159;
PI=124214.214124; //错误写法
print(PI);
final a=new DateTime.now();
print(a); //2019-05-10 15:59:02.966122
//const a=new DateTime.now(); //报错了
//区别:final 可以开始不赋值 只能赋一次 ; 而final不仅有const的编译时常量的特性,最重要的它是运行时常量,并且final是惰性初始化,即在运行时第一次使用前才初始化
}
四丶 命名规则
1、变量名称必须由数字、字母、下划线和美元符($)组成。
2、注意:标识符开头不能是数字
3、标识符不能是保留字和关键字。
4、变量的名字是区分大小写的如: age和Age是不同的变量。在实际的运用中,也建议,不要用一个单词大小写区分两个变量。
5、标识符(变量名称)一定要见名思意 :变量名称建议用名词,方法名称建议用动词
3.3、常用数据类型、字符串类型、数值类型、布尔类型、List集合类型、Maps类型
一丶 数据类型
常用数据类型:
Numbers(数值):
int
double
Strings(字符串)
String
Booleans(布尔)
bool
List(数组)
在Dart中,数组是列表对象,所以大多数人只是称它们为列表
Maps(字典)
通常来说,Map 是一个键值对相关的对象。 键和值可以是任何类型的对象。每个 键 只出现一次, 而一个值则可以出现多次
项目中用不到的数据类型 (用不到):
Runes
Rune是UTF-32编码的字符串。它可以通过文字转换成符号表情或者代表特定的文字。
main() {
var clapping = '\\u{1f44f}';
print(clapping);
print(clapping.codeUnits);
print(clapping.runes.toList());
Runes input = new Runes(
'\\u2665 \\u{1f605} \\u{1f60e} \\u{1f47b} \\u{1f596} \\u{1f44d}');
print(new String.fromCharCodes(input));
}
Symbols
Symbol对象表示在Dart程序中声明的运算符或标识符。您可能永远不需要使用符号,但它们对于按名称引用标识符的API非常有用,因为缩小会更改标识符名称而不会更改标识符符号。要获取标识符的符号,请使用符号文字,它只是#后跟标识符:
在 Dart 中符号用 # 开头来表示,入门阶段不需要了解这东西,可能永远也用不上。
http://dart.goodev.org/guides/libraries/library-tour#dartmirrors—reflection
二丶 字符串类型
Dart数据类型:字符串类型
void main(){
//1、字符串定义的几种方式
var str1='this is str1';
var str2="this is str2";
print(str1);
print(str2);
String str1='this is str1';
String str2="this is str2";
print(str1);
print(str2);
String str1='''this is str1
this is str1
this is str1
''';
print(str1);
String str1="""
this is str1
this is str1
this is str1
""";
print(str1);
//2、字符串的拼接
String str1='你好';
String str2='Dart';
print("$str1 $str2");
print(str1 + str2);
print(str1 +" "+ str2);
三丶 数值类型
Dart数据类型:数值类型
int
double
void main(){
//1、int 必须是整型
int a=123;
a=45;
print(a);
//2、double 既可以是整型 也可是浮点型
double b=23.5;
b=24;
print(b);
//3、运算符
// + - * / %
var c=a+b;
print(c);
}
四丶 布尔类型
Dart数据类型:布尔类型
bool 值true/false
void main(){
//1、bool
bool flag1=true;
print(flag1);
bool flag2=false;
print(flag2);
//2、条件判断语句
var flag=true;
if(flag){
print('真');
}else{
print('假');
}
var a=123;
var b='123';
if(a==b){
print('a=b');
}else{
print('a!=b');
}
var a=123;
var b=123;
if(a==b){
print('a=b');
}else{
print('a!=b');
}
}
五丶 List集合类型
Dart数据类型: List(数组/集合)
void main(){
//1、第一种定义List的方式
var l1=['aaa','bbbb','cccc'];
print(l1);
print(l1.length);
print(l1[1]);
//2、第二种定义List的方式
var l2=new List();
l2.add('张三');
l2.add('李四');
l2.add('王五');
print(l2);
print(l2[2]);
//3、定义List指定类型
var l3=new List<String>();
l3.add('张三');
l3.add(123);
print(l3);
}
六丶 Maps类型
Dart数据类型: Maps(字典)
void main(){
//第一种定义 Maps的方式
var person={
"name":"张三",
"age":20,
"work":["程序员","送外卖"]
};
print(person);
print(person["name"]);
print(person["age"]);
print(person["work"]);
//第二种定义 Maps的方式
var p=new Map();
p["name"]="李四";
p["age"]=22;
p["work"]=["程序员","送外卖"];
print(p);
print(p["age"]);
}
七丶 类型判断
Dart判断数据类型 :
是通过is 关键词来判断类型
void main(){
var str='1234';
if(str is String){
print('是string类型');
}else if(str is int){
print('int');
}else{
print('其他类型');
}
var str=123;
if(str is String){
print('是string类型');
}else if(str is int){
print('int');
}else{
print('其他类型');
}
}
3.4、运算符、条件判断、类型转换
一丶 运算符
算术运算符
+ - * / ~/ (取整) %(取余)
关系运算符
== != > < >= <=
逻辑运算符
! && ||
赋值运算符
基础赋值运算符 = ??=
复合赋值运算符 += -= *= /= %= ~/=
条件表达式
if else switch case
三目运算符
??运算符:
二丶 算术运算符
void main(){
int a=13;
int b=5;
print(a+b); //加
print(a-b); //减
print(a*b); //乘
print(a/b); //除
print(a%b); //其余
print(a~/b); //取整
var c=a*b;
print('--------');
print(c);
三丶 关系运算符
void main(){
// == != > < >= <=
int a=5;
int b=3;
print(a==b); //判断是否相等
print(a!=b); //判断是否不等
print(a>b); //判断是否大于
print(a<b); //判断是否小于
print(a>=b); //判断是否大于等于
print(a<=b); //判断是否小于等于
if(a>b){
print('a大于b');
}else{
print('a小于b');
}
}
四丶 逻辑运算符
void main(){
/* ! 取反 */
bool flag=false;
print(!flag); //取反
/* &&并且:全部为true的话值为true 否则值为false */
bool a=true;
bool b=true;
print(a && b);
/* ||或者:全为false的话值为false 否则值为true */
bool a=false;
bool b=false;
print(a || b);
//如果一个人的年龄是20 并且 sex是女的话我们打印这个人
int age=20;
String sex="女";
if(age==20 && sex=="女"){
print("$age --- $sex");
}else{
print("不打印");
}
//如果一个人的年龄是20 或者 sex是女的话我们打印这个人
int age=23;
String sex="女";
if(age==20 || sex=="女"){
print("$age --- $sex");
}else{
print("不打印");
}
}
五丶 基础赋值运算符&复合赋值运算符
void main(){
// 1、基础赋值运算符 = ??=
int a=10;
int b=3;
print(a);
int c=a+b; //从右向左
b??=23; 表示如果b为空的话把 23赋值给b
int b=6;
b??=23;
print(b);
int b;
b??=23;
print(b);
//2、 复合赋值运算符 += -= *= /= %= ~/=
var a=12;
a=a+10;
print(a);
var a=13;
a+=10; //表示a=a+10
print(a);
var a=4;
a*=3; //a=a*3;
print(a);
}
六丶 条件表达式
void main(){
//1、if else switch case
bool flag=true;
if(flag){
print('true');
}以上是关于Dart 总结的主要内容,如果未能解决你的问题,请参考以下文章