首页 > 其他分享 >dart的基本使用

dart的基本使用

时间:2023-01-31 19:22:18浏览次数:37  
标签:基本 name void dart var 使用 print main String

1.windows上环境搭建

(1)  在dart官网上下载对应的sdk安装即可。

(2)  使用vscode开发,安装dart插件和Code Runner插件即可。

 2.Dart的入口方法、打印、注释、常量、及变量

 

//1. 在dart中所用被执行的代码都得放在main方法中

// main() {
//   print("你好dart");
// }
void main() {
  //表示main方法没有返回值
  print("你好dart");
}

 

//2.常量及变量的定义

void main() {
  //变量命名和js基本一致
  //(1)可以通过var定义变量,自动进行类型推断
  var str = "sdfsdf";
  str = "nvsdfdf";
  print(str);
  var num = 1233;
  print(num);

  //(2)定义常量

  //const 定义常量必须赋初始值,不能修改
  const PI = 3.1416926;

  // final不仅有const在编译时常量的特性,最重要的时它是运行时的常量,并且final时惰性初始化
  // 即运行时第一次使用才初始化
  final time = new DateTime.now();
  // ignore: unused_local_variable
  final h;
  h = 3;
  // h = 4;//报错,不能再次复制

  print(time);
}

3.dart中的常用的数据类型

1.Numbers(数值)  int double 2.String(字符串)  String 3.Booleans(布尔) bool 4.(数组) 在dart中,数组时列表对象,所以大多数的人称其未列表 5. Maps(字典)  Map是一个键值对相关的对象,键和值可以时任意类型的对象

 

//1.字符串类型
void main() {
  //(1)var定义
  var str = "sdfsdf";
  print(str);
  //(2)通过String定义字符串
  String str1 = "2dsfdsf";
  print(str1);
  // (3) 多行字符串通过三引号
  String str2 = """this is xiaoming
this is xiaohong
   """;
  print(str2);
//(4)字符串拼接
  String str3 = "你好";
  String str4 = "dart";
  print('$str3 $str4');
  print(str3 + str4);
}

 

//2.数值类型
void main() {
  // (1)int必须是整型
  int num = 1233;
  print(num);
  //(2)double可以是整型和浮点型
  double num1 = 12.3;
  double num2 = 12;
  print(num1);
  print(num2);
  //(3)运算符和js一样+-*?%
}
//3.Boolean类型
void main() {
  //1.bool类型
  bool flag = false;
  flag = true;
  print(flag);
}
//4.数组
void main() {
  //(1)定义数组,
  var list = ["张三", 20, true];
  print(list);
  //(2)定义数组,指定类型
  var arr = <String>["asdad", "fdggdfg"];
  print(arr);
  //(3)定义数组,添加或移除数据
  var arr1 = [];
  arr1.add("dsff");
  arr1.add(23);

  print(arr1);

  print(arr1.length);
  //(4)移除
  list.remove(20);
  print(list);
  //(5)创建固定长度的集合,不能修改长度

  var arr2 = List<String>.filled(2, "");
  arr2[0] = "张三";
  arr2[1] = "李四";
  // arr2.add("wanger");运行时会报错
  print(arr2);
}
//6.Map字典(对象)
void main() {
  //1.定义Maps
  var person = {
    "name": "张三",
    "age": 20,
    123: ["打篮球", "玩游戏"]
  };
  print(person);
  //不能像JS用person.name
  print(person['name']);

  var p = new Map();
  p["name"] = "李四";
  p["age"] = 20;
  print(p);
}

4.判断数据类型的方法

void main() {
  var str = "123";
  if (str is String) {
    print("str是字符串类型");
  } else {
    print("str是数字类型");
  }
}

5.算术运算符

void main() {
  int a = 26;
  int b = 13;
  print(a + b); //加
  print(a - b); //减
  print(a * b); //乘
  print(a / b); //除
  print(a % b); //取余
  print(a ~/ b); //取整
}

6.关系运算符

void main() {
  int a = 5;
  int b = 3;
  print(a == b); //判断是否相等 false
  print(a != b); //判断是否不等 true
  print(a > b); //判断是否大于
  print(a < b); //判断是否小于
  print(a >= b); //判断是否大于等于
  print(a <= b); //判断是否小于等于
}

7.逻辑运算符

void main() {
  bool flag = true;
  print(!flag); //取反
  // && 并且:全为true为true否则为false

//|| 或者:全为false值为false,否则为true
}

8.赋值运算符

void main() {
  //1.赋值运算符
  int a = 10;
  print(a);
  //b??=23 表示b为空的话把23赋值给b
  int b = 10;
  // b??23;
  print(b);
  // 2.复合赋值运算符
  var c = 12;
  // c += 10; //表示c=c+10
  // print(c);//22
  c *= 3; //表示c=c*3
  print(c); //36
}

9.条件运算符

// ignore_for_file: dead_code

void main() {
  //1. if else switch case 和js一样用法
  bool flag = true;
  if (flag) {
    print(true);
  } else {
    print(false);
  }
  //2.三目运算符
  bool isShow = false;
  String c = isShow ? "2324" : "qweqe";
  print(c);

  //3. ??运算符
  var a;
  var b = a ?? 10;
  print(b);
}

 

10.类型转换

void main() {
  //1.Number和Stirng类型之间的转换
  //Number转换为String 用toString()
  //String转换为Number 用int.parse()或double.parse()
  String str = "123.2";
  var num = double.parse(str);
  print(num is double);

  var myNum = 13;
  var str1 = myNum.toString();
  print(str1 is String);

  //2.其他类型转换为bool类型
  // isEmpty:判断字符串是否为空
  var str2 = "";
  if (str2.isEmpty) {
    print("str2为空");
  } else {
    print("str2不为空");
  }
  var count;
  if (count == null) {
    print("count为空");
  } else {
    print("count非空");
  }
}

 11.循环语句

void main() {
  //1.for循环和js一样
  for (var i = 1; i <= 100; i++) {
    if (i % 2 == 0) {
      print(i);
    }
  }

  List arr = ["张三", "李四", "王五"];
  for (var i = 0; i <= arr.length; i++) {
    print(arr[i]);
  }
}

//2.while
void main() {
  //while先判断条件成立再执行
  var i = 1;
  while (i <= 10) {
    print(i);
    i++;
  }
  //do while先执行一次再判断条件是否成立
  do {
    print(i);
    i++;
  } while (i <= 10);
}

12.数组的常用方法

void main() {
  //1.判断数组是否为空isEmpty、isNotEmpty
  List arr = ["苹果", "香蕉"];
  print(arr.isEmpty); //false
  print(arr.isNotEmpty); //true
  //2.翻转数组reversed
  print(arr.reversed);
  //toList将其他类型转换为数组
  print(arr.reversed.toList());

  //List中的常用方法
  List arr1 = ["苹果", "香蕉"];
  //3.add增加一个
  arr1.add("桃子"); //增加一个
  print(arr1);
  //4.addAll增加多个
  arr1.addAll(["芒果", "西瓜"]); //
  print(arr1);
  //5.indexOf和js一样 查找数据,没有返回-1
  print(arr1.indexOf("sdf"));
  //6.remove删除数据
  arr1.remove("西瓜");
  arr1.removeAt(1); //根据索引删除
  print(arr1);
  //7.修改数据fillRange
  List myList = ["苹果", "香蕉", "西瓜"];
  myList.fillRange(1, 3, "qww");
  print(myList);
  //8.插入一个数据insert
  myList.insert(1, "ddd");
  print(myList);
  //9.插入多个insertAll
  myList.insertAll(1, ["芒果", "橘子"]);
  print(myList);
  //10.join和split和js一样

  
}

13.遍历数组的方法

// ignore_for_file: unused_local_variable

void main() {
  List arr = ["苹果", "香蕉", "西瓜"];
  //1.for in
  for (var item in arr) {
    print(item);
  }
  Map obj = {"name": "ewrwr", "age": 18};

  //2.forEach
  arr.forEach((item) {
    print(item);
  });
  List myList = [1, 2, 4];
  //3.map
  var newList = myList.map((e) {
    return e * 2;
  });
  print(newList.toList());

  //4.where 返回满足条件的数据
  List list = [1, 2, 4, 6, 7, 9, 13];
  var newData = list.where((item) {
    return item > 4;
  });
  print(newData);
  //6.any只要有一个满足条件返回true,类似js中some
  var f = list.any((value) {
    return value > 9;
  });
  print(f);
  //7.every所有的满足条件返回true,否则返回false,类似js中every   List arr1 = [3, 5, 7, 9, 12];   var res = arr1.every((item) => item > 4);   print(res);
}

14.操作Map的方法

void main() {
  Map person = {"name": "张三", "age": 18};
  //1.获取key 用keys
  print(person.keys.toList());
  //2.获取value用values
  print(person.values.toList());
//3.判断是否为空isEmpty
  print(person.isEmpty);
  //4.添加属性addAll
  person.addAll({
    "work": ["敲代码", "送外卖"],
    "height": 180
  });
  print(person);
  //5.删除remove
  person.remove("age");
  print(person);
  //6.查看映射中存在的某个值containsValue
  print(person.containsValue("张三"));
}

15.自定义方法

//1.命名方法
//返回值类型+方法名,不知道返回值类型可以不指定返回值类型
//全局方法
String getStr() {
  return "this is str";
}

void main() {
  var str = getStr();
  print(str);
  //局部方法
  int getSum(int n) {
    var sum = 0;
    for (var i = 1; i <= n; i++) {
      sum += i;
    }
    return sum;
  }

  var data = getSum(100);
  print(data);
  //传入可选参数

  String printUserInfo(String name, [age]) {
    if (age != null) {
      return "姓名:$name---年龄:$age";
    }
    return "姓名:$name---年龄保密";
  }

  print(printUserInfo("张三"));

  //默认参数
  String printUserInfo1(String name, [String sex = "男"]) {
    return "姓名:$name--性别:$sex";
  }

  print(printUserInfo1("张三", "女"));

  //2.匿名方法
  var fn = () {
    print(122);
  };

  fn();
  //3.方法递归

  var sum = 1;
  fn1(int n) {
    sum *= n;
    if (n == 1) {
      return;
    }
    fn1(n - 1);
  }

  fn1(5);
  print(sum);
}

16.dart中定义类

//1.定义类,与js类似

class Person {
  String name = "张三";
  int age = 18;
  void getInfo() {
    print("${this.name}---${this.age}");
  }

  //修改类中shuxing
  void setInfo(int age) {
    this.age = age;
  }
}
void main() {
  //  实例化类
  var p = new Person();
  p.getInfo();
  p.setInfo(28);
  p.getInfo();
}

 17.dart中构造函数

//类中构造函数
//late 延迟初始化值
class Person1 {
  late String name;
  late int age;
  //(1)默认构造函数与类名相同
  Person1(String name, int age) {
    this.name = name;
    this.age = age;
  }
  //(2)默认构造函数的简写
  // Person1(this.name, this.age);

  //(3)命名构造函数,可以写多个
  Person1.now() {
    print("我是命名构造函数");
  }

  void getInfo() {
    print("${this.name}---${this.age}");
  }
}

void main() {
//默认构造函数的实例化
  var p1 = new Person1("王二", 25);
  p1.getInfo();
  var p2 = new Person1("李四", 15);
  p2.getInfo();
  //命名构造函数的调用
  var p3 = new Person1.now();
}

 18.类中的模块化和私有属性

//类的模块化
import "lib/Animal.dart";

void main() {
  //模块化实例化
  var a = new Animal("小狗", 3);
  // print(a._name);// 不能访问私有属性
  print(a.age);
  print(a.getName());
}

19.类中的getter和setter

class Rect {
  late num height;
  late num width;
  Rect(this.height, this.width);
  // area() {
  //   return this.height * this.width;
  // }
  //使用get定义方法,类似计算属性
  get area {
    return this.height * this.width;
  }

  set areaHeight(value) {
    this.height = value;
  }
}

void main() {
  var r = new Rect(10, 2);
  // print(r.area());
  print(r.area); //调用时直接通过访问属性的方式来访问
  r.areaHeight = 6;
  print(r.area); //调用时直接通过访问属性的方式来访问
}

20.类中的静态方法和静态属性

//在前面加上static来声明静态属性和方法
class Person {
  static String name = "张三";
  static int age = 15;
  String work = "码农";
  static void show() {
    //静态属性直接访问,不需要加this
    print(name);
  }

  void printInfo() {
    //非静态方法可以访问静态成员
    print(age);
    show();
  }

  static void getUserInfo() {
    // print(this.work);//静态方法没法访问非静态属性
    // this.printInfo(); //静态方法没法访问非静态方法
  }
}

void main() {
  //静态方法和属性直接通过类来访问
  // print(Person.name);
  // Person.show();
  var p = new Person();
  p.printInfo();
}

21.对象操作符

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

void main() {
  //1.条件运算符 ?
  var p;
  p?.getInfo();
  // var p = new Person("张三",18);
  // p.getInfo();

  //2.类型判断 is
  var p1 = new Person("张三", 18);
  if (p1 is Person) {
    p1.name = "李四";
  }
  p1.getInfo();

  //3.类型转换 as
  var p2 = "";
  p2 = new Person("张三", 18) as String;

  //级联符 ..
  var p3 = new Person("李四", 23);
  // p3.name = "王二";
  // p3.age = 40;
  // p3.getInfo();
  //可以简化为
  p3
    ..name = "李四"
    ..age = 30
    ..getInfo();
}

22.类的继承

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

  void work() {
    print("work");
  }
}

// 通过extends关键字来继承
class Son extends Person {
  late String sex;
  //通过super传父类中的参数
  Son(super.name, super.age, sex) {
    this.sex = sex;
  }
  //覆写赋值中的方法
  @override
  getInfo() {
    print("${this.name}---${this.age}--${this.sex}");
  }

  run() {
    // super.work();
    this.work();
  }
}

void main() {
  Son s = new Son("张三", 30, "男");
  s.getInfo();
  s.run();
}

23.抽象类和接口

//1.抽象类的定义

abstract class Animal {
  eat(); //抽象方法:定义方法没有方法体,而是在子类中实现
}

class Dog extends Animal {
  @override
  eat() {
    //必须要实现抽象类中的方法
    print("小狗爱吃骨头");
  }
}

//2.dart中没有interface,而是通过抽象类来实现接口的
abstract class Db {
  late String url;
  add(String data);
}

abstract class Methods {
  late String methods;
}

//通过implements来实现接口,可以实现多个接口
class Mysql implements Db, Methods {
  String url;
  String methods;
  Mysql(this.url, this.methods);
  @override
  add(String data) {
    print("add方法$data---${this.methods}");
  }
}

void main() {
  var d = new Dog();
  d.eat();

  // var a = new Animal();抽象类不能实例化

  var mysql = new Mysql("127.1.0.1", "POST");
  mysql.add("dsfsdf");
}

 

标签:基本,name,void,dart,var,使用,print,main,String
From: https://www.cnblogs.com/chenxian123m/p/mn123.html

相关文章