Dart语言学习

本文详细介绍了Dart语言的基础知识,包括命名规则、常量、变量、数据类型(如Numbers、Strings、Booleans、List、Map及不常用类型)、运算符、循环结构,以及Dart的面向对象特性如类、泛型、mixins。此外,还讨论了库的使用和管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、命名规则

1.变量名称必须由数字、字母、下划线和美元符($)组成

2.标识符开头不能是数字

3.标识符不能是保留字和关键字

4.变量的名字是区分大小写的如: age和Age是不同的变量。在实际的运用中,也建议,不要用一个单词大小写区分两个变量

5.标识符(变量名称)一定要见名思意 :变量名称建议用名词,方法名称建议用动词

二、常量

Dart中常用的定义常量的方法:

const:值不变 一开始就得赋值。

final :可以开始不赋值 只能赋一次 ;

具有const的编译时常量的特性;

运行时常量(惰性初始化),即在运行时第一次使用前才初始化。

三、变量

特点:不预先定义变量类型 ,自动会类型推倒。

var关键字可以通过类型来申明变量,举例:

var str='我是变量';

String str='我是变量';

注意:var 后就不要写类型 ,写了类型不要var ;两者都写 var a int = 5; 报错。

dart里面有类型校验,举例:

var str='';
str=1234;
 会提示报错。

四、数据类型

1.Numbers(数值)

int:必须是整型。

double:既可以是整型 也可是浮点型。

都可使用运算符 + - * / %

2.Strings(字符串)

定义方法:
var str1='this is str1';
var str2="this is str2";
String str1='this is str1';
String str2="this is str2";
String str1='''this is str1;
String str1=""";

3.Booleans(布尔)

4.List(数组)

(1)定义

1、基本
var l1=["张三",20,true];
2、指定类型
var l2=<String>["张三","李四"];
3、通过[]创建的集合它的容量可以变化,增加数据
var aa = [];
aa.add("张三");

(2)属性

length          长度
reversed        翻转
isEmpty         是否为空
isNotEmpty      是否不为空

(3)常用方法

add         增加
addAll      拼接数组
indexOf     查找  传入具体值
remove      删除  传入具体值
removeAt    删除  传入索引值
fillRange   修改   
insert(index,value);            指定位置插入    
insertAll(index,list)           指定位置插入List
toList()    其他类型转换成List  
join()      List转换成字符串
split()     字符串转化成List
forEach   
map
where
any
every

5.Maps(字典)

(1)定义

1.第一种
var person={
      "name":"张三",
      "age":20,
      "work":["程序员","送外卖"]
   };
print(person["name"]);
2.第二种
var p=new Map();
p["name"]="李四";
print(p["name"]);

(2)属性

keys            获取所有的key值
values          获取所有的value值
isEmpty         是否为空
isNotEmpty      是否不为空

(3)常用方法

remove(key)     删除指定key的数据
addAll({...})   合并映射  给映射内增加属性
containsValue   查看映射内的值  返回true/false
forEach   
map
where
any
every

6.不常用数据类型

(1)Runes

Rune是UTF-32编码的字符串。它可以通过文字转换成符号表情或者代表特定的文字。

Runes input = new Runes('\u2665  \u{1f605}  \u{1f60e}  \u{1f47b}  \u{1f596}  \u{1f44d}');
  print(new String.fromCharCodes(input));

(2)Symbols

程序中声明的运算符或标识符

(3)is

is 关键词来判断类型

五、运算符

1.算术运算符

+(加)  -(减)  *(乘)  /(除)   ~/ (取整)   %(取余)

2.关系运算符

==(是否相等)   !=(是否不等)   >(是否大于)    <(是否小于)    >=(是否大于等于)    <=(是否小于等于)

3.逻辑运算符

 !(取反)  &&(并且)   ||(或者)

4.赋值运算符

基础赋值运算符:

 =(直接赋值)   ??=(判断是否为空,为空将值赋给它)

复合赋值运算符:+=  -=  *=   /=   %=  ~/=

5.条件表达式

if  else 

switch case 

三目运算符

??运算符:

6.类型转换

Number类型转换成String类型 toString()。

String类型转成Number类型  int.parse()

六、循环

1.自增/自减

++  --

2.for循环

for (int i = 1; i<=100; i++) {   
            print(i);
 }

3.while

while(表达式/循环条件){			
			
}	

do{
			语句/循环体
			
		}while(表达式/循环条件);

4.中断

break;

continue

七、Dart类

1.dart面向对象特征

(1)特征

封装

继承

多态:父类定义一个方法不去实现,让继承他的子类去实现,每个子类有不同的表现。子类的实例赋值给父类的引用。

(2)特点

Dart所有的东西都是对象,所有的对象都继承自Object类。

Dart是一门使用类和单继承的面向对象语言,所有的对象都是类的实例,并且所有的类都是Object的子类。

class Person{
  String name="张三";
  int age=23;
  void getInfo(){
      // print("$name----$age");
      print("${this.name}----${this.age}");
  }
  void setInfo(int age){
    this.age=age;
  }
}

一个类通常由属性和方法组成。

2.泛型

(1)泛型方法

解决 类 接口 方法的复用性、以及对不特定数据类型的支持(类型校验)。

不指定类型放弃了类型检查。我们现在想实现的是传入什么 返回什么。

T getData<T>(T value){
      return value;
  }

(2)泛型类

class MyList<T> {
  List list = <T>[];
  void add(T value) {
    this.list.add(value);
  }

  List getList() {
    return list;
  }
}

(3)泛型接口

同一功能,按照接口约束实现。

3.mixins

(1).特点

  • 作为mixins的类只能继承自Object,不能继承其他类
  • 作为mixins的类不能有构造函数
  • 一个类可以mixins多个mixins类
  • mixins绝不是继承,也不是接口,而是一种全新的特性
  • mixins的类型就是其超类的子类型

(2).用法

class A {
  String info="this is A";
  void printA(){
    print("A");
  }
}

class B {
  void printB(){
    print("B");
  }
}

class C with A,B{
  
}

4.类

(1)抽象类

子类可以继承抽象类,也可以实现抽象类接口。

  • 抽象类通过abstract 关键字来定义
  • Dart中的抽象方法不能用abstract声明,Dart中没有方法体的方法我们称为抽象方法。
  • 如果子类继承抽象类必须得实现里面的抽象方法
  • 如果把抽象类当做接口实现的话必须得实现抽象类里面定义的所有属性和方法。
  • 抽象类不能被实例化,只有继承它的子类可以

extends抽象类 和 implements的区别?

  • 如果要复用抽象类里面的方法,并且要用抽象方法约束自类的话我们就用extends继承抽象类
  • 如果只是把抽象类当做标准的话我们就用implements实现抽象类

(2)接口

dart的接口没有interface关键字定义接口,而是普通类或抽象类都可以作为接口被实现。同样使用implements关键字进行实现。

如果实现的类是普通类,会将普通类和抽象中的属性的方法全部需要覆写一遍。而因为抽象类可以定义抽象方法,普通类不可以,所以一般如果要实现像Java接口那样的方式,一般会使用抽象类。
建议使用抽象类定义接口。

(3)Dart 类中的静态成员 静态方法

  • 使用static 关键字来实现类级别的变量和函数
  • 静态方法不能访问非静态成员,非静态方法可以访问静态成员

(4)类的继承

  • 子类使用extends关键词来继承父类
  • 子类会继承父类里面可见的属性和方法 但是不会继承构造函数
  • 子类能复写父类的方法 getter和setter

5.库

(1)本地库

import 'lib/xxx.dart';

(2)系统内置库

  • dart:core:内置类型,数字,字符串,集合和其他核心功能。
  • dart:async:支持异步编程,包括Future和Stream等类。
  • dart:math:数学常数和函数,以及随机数生成器。
  • dart:convert:不同数据表示之间进行转换的编码器和解码器,包括 JSON 和 UTF-8 。

(3)Pub包管理系统中的库

Pub包管理系统中的库的地址:

https://pub.dev/packages
https://pub.flutter-io.cn/packages
https://pub.dartlang.org/flutter/

举例:

  • 需要在自己想项目根目录新建一个pubspec.yaml
  • 在pubspec.yaml文件 然后配置名称 、描述、依赖等信息
  • 然后运行 pub get 获取包下载到本地  
  • 项目中引入库 import 'package:http/http.dart' as http;

(4)部分导入

模式一:只导入需要的部分,使用show关键字:
import 'package:lib1/lib1.dart' show foo;

模式二:隐藏不需要的部分,使用hide关键字:
import 'package:lib2/lib2.dart' hide foo;  

(5)注意

引库冲突时,使用as 给包重命名

最后

文件最后,附上文章对应的Dart相关的思维导图对应的图片。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值