美文网首页
Flutter快速入门之Dart基础语法

Flutter快速入门之Dart基础语法

作者: 丶切切切切梨 | 来源:发表于2019-05-16 10:02 被阅读0次

    基本数据类型

    
    int i =1;
    
    double d =0.5;
    
    bool b =true;
    
    String s ="text";
    
    

    // 自动推断类型

    
    var i =1;
    
    var d =0.5;
    
    var b =true;
    
    var s ="text";
    
    //或者
    
    dynamic i =1;
    
    dynamic d =0.5;
    
    dynamic b =true;
    
    dynamic s ="text";
    
    

    dart中没有long、char等基本数据类型。使用var或dynamic来定义类型,dart自动推断。

    变量

    
    int i =2;
    
    var a ="a";
    
    dynamic n =9;
    
    

    我们可以指定数据类型,或者使用var或dynamic来申明,dart会自动推断类型。

    常量

    
    int i =2;
    
    final i1 = i;
    
    const i2 =2;
    
    

    不使用var或者其他数据类型,而用final或者const来修饰的数据表示不会改变的常量。

    一个被final修饰的变量只能被赋值一次,一个被const修饰的变量是一个编译时常量(const常量也是final常量)。
    final修饰的变量是不可改变的,而const修饰的表示一个常量。const i3 = i;这种写法是错误的。

    数组

    
    List list = [0,1,2,3,4,5];
    
    

    数组遍历

    
    List numbers = [0, 1, 2, 3, 4, 5];
    
    for (var i =0; i < numbers.length; ++i) {
      print(numbers[i]);
    }
    
    for (var n in numbers) {
      print(n);
    }
    
    numbers.forEach((num) => print(num));
    
    

    String转换符

    
    Strings ="hello";
    
    print("say$s");  //sayhello
    
    
    
    class User {
      say() =>"haha";
    }
    
    print("say${User().say()}"); //sayhaha
    
    

    函数

    
    int add(int a, int b){
        return a+b;
    }
    
    

    或者省略返回值

    
    add(int a, int b){
     return a+b;
    }
    
    

    或者=> 代替return

    
    add(int a, int b) => a+b;
    
    

    函数传参

    常规参数

    
    printStr(String str){
      print(str);
    }
    
    

    命名参数

    
    printStr({String str}){
      print(str);
    }
    //或者
    printStr({str : String}){
      print(str);
    }
    
    

    参数默认值

    add({int a, int b =3}) {
      return a+b;
    }
    

    函数赋值传值

    函数作为对象传递

    
    printNum(int a) {
      print("$a");
    }
    
    printArr() {
    
      //  依次打印:1-5
      var array = [1,2,3,4,5];
      array.forEach(printNum);
    }
    
    

    函数赋值给变量

    
    printNum(int a) {
      print("$a");
    }
    
    printArr() {
      var p =printNum;
    }
    
    

    匿名函数

    
    nameless(Function callback){
      callback("返回了一个字符串");
    }
    
    printStr() {
    
    nameless((str){
        print("$str");
      });
    }
    
    

    匿名函数类似于java中的接口,Fuction类是一个抽象类,以上代码类似于java的接口回调,通过callback回传了一个字符串。

    运算符

    is判断类型

    
    var s ="sss";
    
    s is String; //true
    
    s is int;  //false
    
    

    ?判空(这个类似于kotlin的空安全实现了一半,你可以用?判断为空调用方法后返回null而不报错,但是无法保证不带?的一定不为空)

    
    var str1 ="hello";
    
    var str2 = null;
    
    print(str1?.length); // 5
    
    print(str2?.length); // null
    
    print(str2.length); // 报错
    
    

    ..运算符(类似于建造者模式)

    
    class User{
    
      say() => print("hello");
    
      run() => print("run");
    
      stop() => print("stop");
    
    }
    
    test(){
      User()..say()..run()..stop();
    }
    
    

    流程控制

    
    //if else
    int a =10;
    
    if (a >1) {
      //...
    }else if (a <1) {
      //...
    }else {
      //...
    }
    
    //switch
    switch (a) {
    
    case 0:
        //...
        break;
    
      case 1:
        //...
        break;
    
      default:
        //...
        break;
    }
    
    //while
    while (a <5) {
      a--;
    }
    
    

    
    class User{
    
      //变量名前面加_表示私有
      String _name;
      int _age;
      String _sex;
    
      //默认构造方法
      User(this._name, this._age, this._sex);
    
      //命名构造方法
      User.cons2(this._name);
    
      //在构造方法cons3执行时调用默认构造方法
      User.cons3(String name) :this(name,0,"男");
    
      //get set方法
      String get name=>_name;
    
      set name(String value) {
        _name = value;
      }
    
      int get age=>_age;
    
      String get sex=>_sex;
    
      set sex(String value) {
        _sex = value;
      }
    
      set age(int value) {
        _age = value;
      }
    }
    
    

    抽象类以及实现

    
    abstract class Person {
    
      //抽象方法,没有方法体,子类实现
      eat(String sth);
    
      //常规方法
      run() => print("run");
    }
    
    class Man extends Person {
    
    //实现父类抽象方法
    @override
      eat(String sth) {
        print("eat $sth");
      }
    }
    
    

    静态成员变量及方法

    
    class Man {
      static const name ="张三";
    
      static say(String sth) {
        print("${Man.name} say $sth");
      }
    
    }
    
    

    相关文章

      网友评论

          本文标题:Flutter快速入门之Dart基础语法

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