Dart基础全

Dart

主函数

//main 函数
void main() {
  print("Hello world2");
}

变量

⚠️:强类型!!但可var

void main() {
 
  String s = "字符串";
  print(s);

  int num = 1223;
  print(num);

  var test = 993; //强类型 但能推断
  print(test);
}

常量

  const PI = 3.14159;
  print(PI);  //🉑️

 	final PI = 3.14159;
	PI = 333;
 	print(PI); //❌

  final a = new DateTime.now();
  print(a); //🉑️

  const a = new DateTime.now(); //❌

⚠️: 看const 和final的区别在于初始化

链表

var lst = ['aaa', 'ss'];
  print(lst);

  List lst2 = new List<String>();
  lst2.add('zhangsan');
  lst2.add('www');
  lst2.add('zhangzzzsan');
  lst2.sort();
  print(lst2[1]);

Map

 var person = {'name': 'zz', 'age': 11};
  print(person['name']);

  var p = new Map();
  p['name'] = "lisi";
  p['work'] = "grammer";
  print(p);

is 判断类型

 print(p is Map);
 print(p is String);

??= 如果为空 赋值

int b;
b ??= 2; //如果为空 赋值
print(b);

三目运算算法

print(true ? "true" : "false");

?? 为空 就等于??后面的值

var aa;
print(aa ?? 100); //a 为空 就赋值??后面的值

类型转换

String num = "122";
print(int.parse(num));

String.isEmpty && int.isNaN

bool a = num.isEmpty;
print(a);

var b = 0 / 0; //不会报错
if (b.isNaN) {
  print("isNaN");
}

定义可选参数

String printUserInfo(String name, [int age]) {
  return ("name:${name}---age:${age}");
}

定义命名参数

String printUserInfo(String name, {int age, String sex = '男'}) {
  if (age != null) {
    return "${name}---${age}---${sex}";
  } else {
    return "${name}----noage----${sex}";
  }
}

把方法当作参数的方法

fn1() {
  print("fn1");
}

fn2(fn) {
  fn();
}
//调用
fn2(fn1);

List 操作(筛选+赋值)

Iterable<T> map<T>(T f(E e)) => MappedIterable<E, T>(this, f);
(){}的方法
List lst = [1, 2, 3, 4, 5, 6];
var newList = lst.map((value) {
  if (value % 2 == 0) {
    return value * 2;
  } else {
    return value;
  }
}).toList();
()=> 的方法
newList = lst.map((value) => value % 2 == 0 ? value * 2 : value).toList();

常驻内存

fnTest() {
  int a = 0;    //不会污染全局 常驻内存
  return () {
    a++;
    print(a);
  };
}

⚠️:调用:

//不会+1
fnTest()();
fnTest()();
fnTest()();

//+1 版本
var bb = fnTest();
bb();
bb();
bb();
bb();

类 构造函数

Person(this.name, this.age);  //默认构造函数
Person.now(String name) {
  this.name = name;
  print("命名构造函数");
}

get set

get nameAddId {
    return this.name +(this.age).toString();
}

静态方法

static String name = "ddddddsss";
int age;

Person(this.age); //默认构造函数
Person.now(String name) {
  print("命名构造函数");
}
get nameAddId {
  return name + (this.age).toString();
}

static getUserInfo() {
  print(name);
}

? is as …连级操作

p?.printinfo();
p as Person
p is Person
Person p1 = new Person(11);
  p1
    ..age = 112
    ..birth = 2233;

继承 + super

class Person {
  String name;
  int age;
  Person(this.name, this.age);
  void printInfo() {
    print("${name}---age:${age}");
  }
}

class Web extends Person {
  Web() : super("kdjkd", 333) {}
}

复写父类方法

class Web extends Person {
  Web() : super("kdjkd", 333) {}
  @override
  void printInfo() {
    print("姓名:${name}");
  }
}

⚠️:建议加上 @override

利用super实现对父类函数调用

class Web extends Person {
  Web() : super("kdjkd", 333) {}
  @override
  void printInfo() {
    print("姓名:${name}");
  }

  void run() {
    this.printInfo();
    super.printInfo();
  }
}

抽象函数

abstract class Animal {
  void eat(); //抽象方法
  void printInfo() {
    print("抽象类的普通方法");
  }
}

class Dog extends Animal {
  @override
  void eat() {
    print("小狗 在吃");
  }
}

多态

⚠️:无非就是多实现个Cat的eat的方法 不同于Dog

接口

⚠️:接口还是abstract 这里没用interface

⚠️:实现的时候还是implement

abstract class Db {
  String uri;
  void add();
  void save();
}

class MySql implements Db {
  @override
  String uri;

  @override
  void add() {
    // TODO: implement add
  }

  @override
  void save() {
    // TODO: implement save
  }
}

mixins

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

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

class C with A, B {
  //mixins 只能继承object 的不是能是其他类
  //不能有构造函数

}

泛型

  • 简单使用
T getData<T>(T value) {
  return value;
}

void main() {
  print(getData<int>(222));
}
  • 泛型类
abstract class Cache<T> {
getBeyKey(String key);
void setByKey(String key, T value);
}

class FileCahe<T> implements Cache<T> {
@override
getBeyKey(String key) {
  // TODO: implement getBeyKey
  throw UnimplementedError();
}

@override
void setByKey(String key, T value) {
  print("key${key}---Vlaue${value}");
}
}


void main() {
var fileCache = new FileCahe<int>();
fileCache.setByKey("kdjkdj", 343);
}

async await 异步

testAsync() async {
  return "Hello world";
}

void main() async {
  var result = await testAsync();
  print(result);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值