美文网首页
dart基础

dart基础

作者: 淹死丶的鱼 | 来源:发表于2019-03-28 13:27 被阅读0次

dart文件命名是小写字母和下划线组成,没有基本数据类型一切皆对象,和很多语言一样是main方法为入口方法
支持顶部函数

void main(){
  print('aa');
}
内置的类型

​ 与Java的八大内置基本数据类型不同,Dart 内置支持下面这些类型:

  • numbers
  • strings
  • booleans
  • lists (也被称之为 arrays)
  • maps
  • runes (用于在字符串中表示 Unicode 字符)
  • symbols
变量的定义

变量命名有好几种方式可以

void main(){
  Object f="";///和java一样任何类默认都继承Object
  String a="";///可以和koltin一样通过${} 来拼接字符串
  bool bl=false;///布尔类型 与java类似
          ///int 和 double 都是num的子类
  int b=0;///dart中没有long类型 但会根据实际的值得大小 来在不同平台转换成对应的值
          ///例如:如果你写的范围超出了java中的int 在android平台就会自动变成long类型
  double c=0.0;///double和上面类似
  var d="";///如果声明的时候没有赋值,之后可以随便改变类型,但是如果声明的时候赋值了就会直接确定其类型
  dynamic e="";///这个类型会动态确定值得类型,也就是在运行时才会确定类型,声明了可以随意改变类型的,
              ///如果确定类型的话不建议使用它
}
final 和const区别

final 是运行时确定的常量,const是编译时就确定的常量 可以提高效率

static

static 和java类似

List和Map

和java不同 List和Map不是接口,可以直接使用
Map和koltin类似通过中括号 赋值
List获取值也和koltin类似通过中括号获取
不过提供的api比较丰富

  List<String> list=List();
  list.add("这是第一条");
  Map<String,String> map=Map();
  map["a"]="a";
循环控制语句

循环: for foreach while do while

List<String> list=List();///dart可以省略new关键字
  list.add("这是第一条");
  list.add("这是第二条");
  list.add("这是第三条");
  list.add("这是第四条");
  for (var i = 0; i < list.length; ++i) {
    print(list[i]);
  }
  list.forEach((s) {
    print(s);
  });
  int a=0;
  while(a<list.length){
    print(list[a]);
    a++;
  }
 int b=0;
 do{
   print(list[b]);
   b++;
 } while(b<list.length);
操作符
  • 类型转换:as
  • 判断类型:is
  • =、+=、=、*=这些不必多说,还有一个 ??= 操作符用来指定 值为 null 的变量的值
  • 安全操作符:?. 表示这个对象不为null才会执行和koltin一样
  • 三目运算符 :String a=1>2?"a":"b"; 和java一样
  • 级联操作符使用 .. 的范式调用方法可以达到java中建造者的效果
 String a=1>2?"a":"b";
  a..length..toString();
方法

在dart中方法是不能重载的,但是dart为我们提供了可选位置参数,和可选命名参数两种

  • 可选位置参数,中括号内要赋值就要按照顺序赋值,不能跳过某个参数
void test(String s,[String a="a”,String b]){///可以在中括号中赋予默认中

}
  • 可选命名参数,大括号内的参数可以选择性的赋值
void test(String s,{int a=0,String c=""}){///可以在大括号中赋予默认中

}
一等方法对象

在dart 中方法可以代表接口,使用时可以写成匿名方法,例如

void main(){
  fu((t){
    print(t);
  });
}
void fu(void t(String t)){///void t(String t) 这个作用相当于一个接口
  t("你好");
}

但是这样写感觉看着很乱我们来改一下

void main(){
  fu((t){
    print(t);
  });
}
void fu(Function t){///Function  声明一个方法一个方法
  t("你好");
}

但是这样我们就看不到需要传递的参数了 这里我们就要借助typedef这个关键字

void main(){
  fu((t){
    print(t);
  });
}
void fu(call_back c){
  c("你好");
}
typedef call_back(String t);

这样我们就可以名确定知道需要传递的参数

异常

和 Java 不同的是,所有的 Dart 异常是非检查异常。 方法不一定声明了他们所抛出的异常, 并且不要求你捕获任何异常。
Dart 提供了 Exception和Error 类型, 以及一些子类型。你还 可以定义自己的异常类型。但是, Dart 代码可以 抛出任何非 null 对象为异常,不仅仅是实现了 Exception 或者Error 的对象。
可以捕捉指定类型异常

try {
    throw 123;
} on int catch(e){
    //使用 on 指定捕获int类型的异常对象       
} catch(e,s){
    //函数 catch() 可以带有一个或者两个参数, 第一个参数为抛出的异常对象, 第二个为堆栈信息 ( StackTrace 对象)
    rethrow; //使用 `rethrow` 关键字可以 把捕获的异常给 重新抛出
} finally{
    
}

类的创建和使用都和java差不多,但是dart中并没有权限修饰符,只有一个下划线代表私有。首字母是下划线代表这个类、方法、属性不能被其他文件访问,dart是支持反射的,但是flutter中将dart的反射屏蔽掉了,所以在flutter开发中也就不能通过反射来操作。
构造方法

class Test {
  Test() {///普通构造方法和java一样 但是不能重载

  }
  factory Test(){///工厂构造方法  这里会报错,原因是方法不能重载
    
  }
}

实现单例有两种方式

  1. 和java一样的做法 输出为true可以知道两次调用的Test.intance是同一个对象
void main() {
  print(Test.intance().hashCode==Test.intance().hashCode);
}
class Test {
 static Test test;
 static intance(){
   return test??=new Test();
 }
}
  1. dart中为我们提供了工厂构造函数,我们可以使用工厂构造函数来实现,输出也为true,我们可以知道我们每一次创建新对象的时候并没有创建 还是第一次创建的对象,实现了单例
void main() {
  print(Te().hashCode==Te().hashCode);
}
class Te {
  int a=0;
  Te._intance(){
    a=1;
  }
  static Te te;
  factory Te(){
    return  te??=Te._intance();
  }
}

相关文章

  • Dart 基础(四)

    前言笔者在之前已经写了3篇Dart的基础文章了。Dart 基础 (一)Dart 基础 (二)Dart 基础 (三)...

  • Dart 基础 (三)

    前言笔者在之前已经写了2篇Dart的基础文章了。Dart 基础 (一)Dart 基础 (二) 本文是Dart基础的...

  • dart入门潜修系列教程

    dart入门潜修基础篇之基本语法和内置类型dart入门潜修基础篇之方法dart入门潜修基础篇之操作符dart入门潜...

  • 一.Dart语法-操作符、方法与异常

    Dart基础 运行Dart 代码可以使用 dart xxx.dart,dart命令需要配置环境变量,将 “${F...

  • Dart基础(一)

    级别: ★☆☆☆☆标签:「Flutter 」「Dart」「Dart基础类型」作者: WYW审校: QiShare...

  • Flutter学习笔记

    Dart基础语法 一、选择开发工具 首先需要安装Dart SDK(https://www.dart-china.o...

  • Dart语言基础,Dart 基础

    Dart 的main方法有两种声明方式 注释 变量的声明 、命名规则、数组类型 Dart是一个强大的脚本类语言,可...

  • Dart 基础

    Dart 基础汇总 点我直达[https://xxxixxxx.github.io/categories/Dart...

  • Flutter - 入门

    Dart基础 如果你有JS、Java、Kotlin、Swift等语言的基础,入门几乎没啥子难度 程序入口 dart...

  • Dart record

    参考 Dart学习笔记(29):异步编程Dart编程字典子不语归来 的 Dart2基础何小有Dart实例教程 数组...

网友评论

      本文标题:dart基础

      本文链接:https://www.haomeiwen.com/subject/bgqqbqtx.html