初识dart

一、属性

1、普通属性定义

        var:任意类型,根据初始赋的值进行类型推断

        int:整型

        double:浮点型

        String:字符型

        bool:布尔型

        const:常量,值不可为对象

        final:常量,值可以是对象

        DateTime:时间类型

        List:数组类型

2、对象属性定义

object:

void main(){
  // maps 类型
  var obj ={ // key 要带引号
    "name":'张三',
    "age":20
  };
  print(obj["name"]);
  var p = new Map();
  p["name"]='ahahaha';
  p['arr'] = ["da",22];
  print(p);
}

array:

扫描二维码关注公众号,回复: 14668097 查看本文章
void main(){
  var arr = <String>["aa","sss"]; // 只能存储 String 类型的数据
  var arr2 = List.filled(2, ""); // 指定长度
  print(arr3.length);
  var arr3 = List<String>.filled(2, ""); // 指定类型 如果不加<string> 自动也会进行类型推导
  arr.add('aaa');
  print(arr.length);

  // 常见的属性和方法
  /*
    属性
    length -----长度
    reversed    翻转
    isEmpty     是否为空
    isNotEmpty  是否不为空
    方法
    add         添加
    addAll      拼接数组
    indexOf     查找 是否有这个值
    remove      删除 传入具体值
    removeAt    删除  传入索引
    fillRange(index,index,value)   修改  对等于 splice
    insert(index,value)      指定位置插入
    insertAll(index,list)     指定位置插入list
    toList()    其他类型转换为list
    join()      list转换成字符串
    split       字符串转化为List
    forEach     
    map 
   */

  var arr2 = ["aa","bb","cc"];
  print(arr2.reversed); // 翻转后得到的不是数组 

  var newArr2 = arr2.reversed.toList(); // 需要toList 转一下
  print(newArr2);

  arr2.forEach((element){ // 循环
    print(element);
  });

  var arr3 = arr2.map((e) => e+"aaa").toList();
  print(arr3);
    // map     返回每一项
    // where   相当于 fillter 返回满足条件的
    // any     只要返回一个就返回true
    // every   每一个都满足就返回true
  }

map:

void main(){
  Map person = {
    "name":"zs",
    "age":20
  };
  print(person.keys.toList()); // 键
  print(person.values.toList()); // 值
  print(person.isEmpty); // 空
  
  /*
    addAll({'worl':'aaa'})   增加
    remove(name)             散出
    containsValue(值)            查看映射内的值 判断是否有该值
   */
}

set:

void main(){
  var s = new Set(); 
  s.add('a');
  s.add('b');
  s.add('a');
  print(s);
  print(s.toList()); // 转换为数组

  var arr = [1,2,1];
  var newArr = new Set();
  newArr.addAll(arr); // set 去重
  print(newArr.toList());
}

3、类型转换or判断

 一  判断

        isEmpty:判断字符串是否为空

        isNaN:判断是否为数字

        is:例:var str = 'dadas'; str is String 判断 str 是否为字符串类型

二 转换

void main(){
  String str = '1212';
  var a = int.parse(str);
  print(str);
  var c = double.parse(str);
  print(c);
  // 如果str不是数字 处理方式一
  // 捕获异常
  str = '';
  try {
      c = double.parse(str);
  } catch (e) {
    print('$str不是数字');
  }
}

4、其它方法

void main() {
  var a = 10; // 自动类型推断
  int b = 20; // 整型
  var c = a~/b // a ~/ b 取整 
  print(c);
  print("$a-----$b"); // $打印属性值
  var d;
  d??=20; // 如果 d 为空 就赋值20 相当于默认值 
  print(d);
  d = a ?? 30; // 如果 a 为空 就为30 与js' || 相似
}

二、方法

1、定义与传值

void printInfo(){
  print('printInfo');
}

int getNum(){
  var num = 123;
  return num;
}

getArr(){ // 可以不限制返回类型

}

int sumNum(int i){ // 限制约束传入的类型 可以不写
  print(i);
  return i;
}

String printUserInfo(String userName,int age){
  return '$userName----$age';
}

void main(){
    printInfo(); // 无返回
    var n = getNum(); // 有返回
    print(n);
    sumNum(1111);
    print(printUserInfo('aaa',10));
}

三、类

1、定义

class Person {
  String? name; // 空安全 可以为null
  int age = 0;
  Person(String name,int age){// 相当于 构造器 简写等价于 Person(this.name,this.age)
    this.name = name;
    this.age = age;
  }
  void getInfo(){
    print("${this.name}----${this.age}");
  }
}

void main() {
  var person = new Person('张三', 20);
  person.getInfo();
}

2、继承 super 可调用直接与父级通信

class Person{
  late String name,
  late int age
  Person(this.name,this.age)
}
class Orbiter extends Person{}

3、方法重写 @override 关键字

class Person{
  late String name,
  late int age
  Person(this.name,this.age)
  void getInfo(){}
}
class Orbiter extends Person{
   @override
   void getInfo(){}
}

4、abstract修饰符 抽象类和抽象方法,父类定义 子类实现

abstract class Describable {
   void describe(); // 定义方法让子类实现
   void describeWithEmphasis() {
    print('=========');
    describe();
    print('=========');
  }
}

class EffectiveDoer extends Describable {
  // 实现了父类的抽象方法
  void describe() {
    print("abstract");
  }
}
void main() {
  var doer= new EffectiveDoer();
  doer.describeWithEmphasis();
}

猜你喜欢

转载自blog.csdn.net/qq_45689385/article/details/122446400