Dart 总结

Posted 王睿丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dart 总结相关的知识,希望对你有一定的参考价值。

1、Dart 介绍

一丶Dart 概述

  • Dart 是 Google 发布的一门开源编程语言
  • Dart 初期目标是称为下一代的 web 开发语言
  • Dart 目前已可用于全平台开发
  • Dart 是一门面向对象的编程语言

二丶为什么使用Dart

  1. 高校
    Dart 语法清晰简洁,工具简单而强大。输入检测可帮助您尽早识别细微错误。Dart 拥有久经考验的 核心库 和一个已经拥有数以千计的 packages 生态系统

  2. 快速
    Dart 提供提前编译优化,以在移动设备和 web 上实现可预测的高性能和快速启动。

  3. 可移植
    Dart 可以编译成 ARM 和 x86 代码,因此 Dart 移动应用程序可以在 iosandroid 及 更高版本上实现本地运行。对于 web 应用程序,Dart 可以转化为 javascript

  4. 易学
    Dart 是面向对象的编程语言,语法风格对于许多现有的开发人员来说都很熟悉。如果您已经了解C++,C# 或 Java,那么使用 Dart 也就是分分钟的事情。

  5. 响应式
    Dart 可以便捷的进行响应式编程。由于快速对象分配和垃圾收集器的实现,对于管理短期对象(比如 UI 小部件),Dart 更加高效。Dart 可以通过 Future 和 Stream 的特性和 API 实现异步编程。

三丶Dart 语言特性

  1. 单进程异步事件模型
  2. 强类型,可以类型推断
  3. DartVM,具有极高的运行效率和优秀的代码运行优化,根据早前的基准测试,性能比肩 Java7 的 JVM
  4. 独特的隔离区(lsolate),可以实现多线程
  5. 面向对象编程,一切数据类型均派生自Object
  6. 运算符重载,泛型支持
  7. 强大的 Future 和 Stream 模型,可以简单实现高效的代码
  8. Minix 特性,可以更好的实现方法复用
  9. 全平台语言,可以很好地胜任移动和前后端的开发
  10. 在语法上,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:coreDart 语言核心功能,内置类型
dart:html网页开发用到的库
dart:io文件读写,IO相关
dart:math数字常量及函数,随机算法等
dart:svg事件和动画矢量图支持

七丶输出“Hello World”

main(){
	print('你好dart');
}

八丶学习资料

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 总结的主要内容,如果未能解决你的问题,请参考以下文章

python常用代码片段总结

BootStrap有用代码片段(持续总结)

BootStrap实用代码片段(持续总结)

Dart 总结

回归 | js实用代码片段的封装与总结(持续更新中...)

Dart学习--Dart之数组(List)的相关方法总结