乐趣区

关于前端:Dart基础

Dart 根底

1. 变量与常量


变量

  • var
  • Object:对象
  • dynamic:

常量

  • final: 运行时分配内存
  • const: 编译时分配内存

2. 数据类型


  • int 整型
  • double 浮点型
  • String 字符串
  • List 数组
  • Map 对象

3. 函数


  • 返回值类型:没有则是 void
  • 办法名
  • 参数:默认参数 {};可选参数 []
// 返回值类型  办法名  默认参数 {} 应用:test1(1,str:'ccc')
String test1(int id,{String str=""}){Map map={1:'aaa',2:'bbb'};
  return map[id] + str;
}
// 可选参数 [] 应用:test2(2,'ddd')
String test2(int id,[String str]){Map map={1:'aaa',2:'bbb'};
  return map[id] + (str != null ? str :'');
}
//  匿名函数
List list = [1,2,3];
list.forEach((element) {print(element);
});

4. 类与继承


  • 类:class
  • 继承:extends
void main() {var p = new Person('su',18);
  p.say();

  var p2 = new Student('su',18,'一年级');
  p2.say();}

// 类
class Person{
  String name;
  int age;
  Person(String name,int age){
    this.name = name;
    this.age = age;
  }
  void say(){print(this.name+'=='+this.age.toString());
  }
}

// 继承
class Student extends Person{
  String className;
  Student(String name, int age,String className) : super(name, age){this.className = className;}
  // 重写父类 say
  @override
  void say(){super.say();// 调用父类 say 办法
    print(this.name+'=='+this.age.toString()+'=='+this.className);
  }
}

5.mixin 与 抽象类


  • 继承多个类:with
  • 抽象类:abstract 只定义方法, 不实现
void main() {var p = new Person('s',18);
    p.eat();
    p.sleep();
    p.say();}

class Eat{void eat(){print('eat');
  }
  void say(){print('bbb');
  }
}

class Sleep{void sleep(){print('sleep');
  }
  void say(){print('aaa');
  }
}
// with 继承两个类
class Person extends Student with Eat,Sleep{
  String name;
  int age;
  Person(name,age){
    this.name =name;
    this.age =age;
  }
  void say(){print(this.name+'=='+this.age.toString());
  }
  // 继承抽象类 student, 须要实现类的办法
  @override
  void study() {print('study');
  }
}

// 抽象类, 只定义方法, 不实现
abstract class Student{void study();
}

6. 应用库


  • 本地援用本人编写的 import ‘package/test.dart’;
  • 援用库:import ‘package:http/http.dart’ as http;

    • 地址:https://pub.dev/;
    • 批改 pubspec.yaml 配置文件
  • 援用零碎自带库:import ‘dart:math’;
  • 提早加载库:deferred as ;

    • 期待加载完后在应用 await math.loadLibrary();
  • 导入库的一部分:show hide

7. 异步解决


  • async await
  • Future
void main() async {
  Future.wait([Future.delayed(new Duration(seconds: 1),(){print(1);
    }),
    Future.delayed(new Duration(seconds: 2),(){print(2);
    })
  ]).then((value) {print(value);
  });
  await Future.delayed(new Duration(seconds: 1),(){print(1111);
  });
  print(222);
}
退出移动版