美文网首页
Dart基础入门

Dart基础入门

作者: 乌龟漫漫 | 来源:发表于2020-03-26 20:10 被阅读0次

    程序入口

    在Dart中都必须有一个顶级的main()$函数作为程序的入口。

    void main() {
    }
    

    控制台输出

    想要在Dart中打印到控制台,可使用print

    print('Hello World!');
    

    变量

    Dart是类型安全的- 它使用静态类型检查和运行时的组合,以确保变量的值始终与变量的静态值类型匹配。但某些类型注释是可选的,Dart会执行类型推断。

    int a = 123;
    var a = 123;
    

    创建和分配变量

    在Dart中,变量必须是明确的类型或者系统能够解析的类型。

    //Both are acceptable in Dart.
    String name = 'dart'; //Explicitly typed as a string.
    var otherName = 'dart'; //Inferred string.
    

    默认值

    在Dart中,未初始化的变量初始值为null

    注意:数字在Dart中也被当成对象,所以只要是带有数字类型的未初始化变量的值都是“null”。

    var name; // == null
    int x; // == null
    

    有关更多信息,可参考Dart官网关于变量的介绍。

    检查null或者零

    在Dart中,只有布尔值“true”被视为true。

    var myNull = null;
      if (myNull == null) {
        print('myNull "== null" to check null');
      }
      var zero = 0;
      if (zero == 0) {
        print('zero "== 0" to check zero');
      }
    

    运行结果:

    myNull "== null" to check null
    zero "== 0" to check zero

    从Dart 1.12开始,null-aware运算符可用来帮我们做null的检查:

    class Student {
       String name;
       int age;
       Student({this.name,this.age});
    }
    void main(){
      Student student = Student(name: '张三');
      print(student?.name??'null');
      print(student?.age??0);
    }
    

    运行结果:

    张三
    0

    ?.运算符在左边为null的情况下会阻断右边的调用,??运算符主要作用是在左侧表达式为null时为其设置默认值。
    对其表达式:

    student?.name??'null'
    

    如果student为null或name为null都会导致表达式为null。

    函数

    Dart是一种真正的面向对象语言,所以即使是函数也是对象,并且有一个类型,Function。这意味着函数可以分配给变量或作为参数传递给其他函数。
    例如:

    int add(int a, int b) {
      return a + b;
    }
    void main()  {
      add(1, 2); //return 3
    }
    

    函数只有一行表达式的,可以使用尖头语法简写成:

    int add(int a, int b) => a + b;
    void main()  {
      add(1, 2); //return 3
    }
    
    可选参数函数

    Dart定义可选参数有两种方式一种使用{}, 另一种使用[]。区别就是, 如果用{}声明,在使用时必须带着参数名,如:a:123;如果用[]声明,在使用时需要按照顺序使用。

    int add1(int a, {int b, int c})  {
      return a + b + c ;
    }
    int add2(int a, [int b, int c]) {
      return a + b + c;
    }
    void main()  {
      add1(1, b:2); //return 3
      add1(1, c:3); //return 4
      add1(1, b:2, c:3); //return 6
    
      add2(1); //return 3
      add2(1, 2); //return 3
      add2(1, 2, 3); //return 6
    }
    

    关于函数的更多内容,可参考Dart官网关于functions的介绍。

    异步编程

    Futures

    Dart是一个单线程编程语言。如果任何代码阻塞线程执行都会导致程序卡死。异步编程防止出现阻塞操作。Dart使用Future对象表示异步操作。

    void main() {
       _getIPAddress() {
        final url = 'https://httpbin.org/ip';
        HttpRequest.request(url).then((value) {
          String ip = json.decode(value.responseText)['origin'];
          print(ip);
        }).catchError((error) => print(error));
      }
      _getIPAddress();
    }
    
    async和await

    在Dart中,async函数返回一个Future,函数的主体稍后执行。await运算符用于等待Future

    _getIPAddress() {
       final url = 'https://httpbin.org/ip';
       var request = await  HttpRequest.request(url);
       String ip = json.decode(request.responseText)['origin'];
       print(ip);
     }
    

    关于函数的更多内容,可参考Dart官网关于async and await的介绍

    相关文章

      网友评论

          本文标题:Dart基础入门

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