【Flutter】Dart篇之一

本文介绍了Dart编程语言的基础知识,包括环境搭建、开发工具推荐、入口方法、注释方法、变量与常量的定义、数据类型(字符串、数值、布尔、List和Map)、类型判断与转换,以及运算符(包括基础赋值和三目运算)。适合初学者了解Dart的基本语法和用法。
摘要由CSDN通过智能技术生成

🔥 本文由 程序喵正在路上 原创,CSDN首发!
💖 系列专栏:Flutter学习
🌠 首发时间:2024年4月22日
🦋 欢迎关注🖱点赞👍收藏🌟留言🐾

Dart入门

介绍

  • Dart是由谷歌开发的计算机编程语言,它可以被用于web、服务器、移动应用 和物联网等领域的开发
  • Dart诞生于2011年,号称要取代JavaScript。但是过去的几年中一直不温不火,直到Flutter的出现才被人们重新重视
  • 要学习Flutter的话我们必须首先得先学会Dart语言
  • 官网:https://dart.dev/

环境搭建

现在网上安装Flutter的教程很多,自己找一个跟着安装即可,可以参考这一片博客:vscode配置flutter开发环境,不需要安装第三方安卓模拟器Flutter 里面也包含了 DartSDK,所以安装完 Flutter 我们也可以运行 Dart 语言。

安装完,一般都会有一个测试步骤,就是在命令行窗口执行 flutter doctor 命令,全部路灯即为成功:

在这里插入图片描述

ps:网络有问题的,可以配置以下 Git 的使用代理

开发工具

Dart的开发工具有很多: IntelliJ IDEA 、 WebStorm、 Atom、vscode等

我这里使用的是 vscode,然后我们要在 vscode 中先安装一些插件:

  1. Flutter 插件
  2. Code Runner 插件,可以运行我们的代码

Dart基础知识

入口方法

我们的 dart 代码都要在入口方法中才能执行,入口方法的定义方法有两种:

方式一:

main() {
  print('你好dart');
}

方式二:

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

想要执行代码的话,右键选择 Run Code 即可,用快捷键也可以:

在这里插入图片描述

注释

我们可以用双斜杠来注释代码,快捷键为 Ctrl + /;也可以用三斜杠 ///;多行注释的话,用 /* */,快捷键为 Alt + Shift + A

ps:vscode 中一键格式化代码的快捷键为 Alt + Shift + F

变量

  • Dart是一个强大的脚本类语言,可以不预先定义变量类型,会自动进行类型推导

  • Dart中定义变量可以通过 var 关键字或者通过类型来申明变量

  • 写了 var 后就不要再写类型, 写了类型就不要写 var

    void main() {
      var str1 = '你好dart';
      var myNum1 = 1234;
      print(str1);
      print(myNum1);
    
      // 字符串
      String str2 = '你好dart';
      print(str2);
    
      // 数字类型
      int myNum = 12354;
      print(myNum);
    }
    

    在这里插入图片描述

变量的命名规则:

  1. 变量名称必须由数字、字母、下划线和美元符($)组成
  2. 标识符(变量名)开头不能是数字
  3. 标识符不能是保留字和关键字
  4. 变量的名字是区分大小写的,如: ageAge 是两个不同的变量。在实际的运用中,也建议不要用一个单词大小写区分两个变量
  5. 标识符一定要见名思意 :变量名称建议用名词,方法名称建议用动词

常量

  • 在 Dart 中,我们用 finalconst 修饰符来定义常量

  • const 的值不能改变,一开始就得赋值

  • final 可以在定义时不赋值,但是只能赋一次值; 而 final 不仅有 const 的编译时常量的特性,最重要的它是运行时常量,并且 final 是惰性初始化,即在运行时第一次使用前才初始化

  • 永远不改量的量,请使用 finalconst 修饰它,而不是使用 var 或其他变量类型

    void main() {
      //const常量
      const PI1 = 3.14159;
      print(PI1);
    
      //final常量
      final PI2 = 3.14159;
      print(PI2);
    
      //const常量在定义时必须要赋值,而方法是要运行时才会赋值
      // const a = new DateTime.now(); //报错
    
      //所以如果想将一个方法的返回值定义为常量,请用final
      final b = new DateTime.now();
      print(b);
    
      final c;
      c = 10;
      print(c); //10
    }
    

    在这里插入图片描述

数据类型

Dart中支持以下数据类型,常用数据类型:

  • Numbers(数值):
    • int
    • double
  • Strings(字符串)
    • String
  • Booleans (布尔)
    • bool
  • List(数组)
    • 在Dart中,数组是列表对象,所以大多数人只是称它们为列表
  • Maps(字典)
    • 通常来说,Map 是一个键值对相关的对象。 键和值可以是任何类型的对象。每个 键只出现一次, 而一个值则可以出现多次

字符串类型

/*
Dart数据类型:字符串类型
*/

void main() {
  //1、字符串定义的几种方式
  //用单引号
  var str = 'this is str';
  print(str);

  //用双引号
  String str1 = "this is str1";
  print(str1);

  //三个单引号或双引号可以定义多行的字符串
  String str2 = '''
  this is str2
  this is str2
  this is str2
  ''';
  print(str2);

  String str3 = """
  this is str3
  this is str3
  this is str3
  """;
  print(str3);

  //2、字符串的几种拼接方式
  print("字符串的拼接:");
  String str4 = '你好';
  String str5 = 'Dart';
  print("$str4 $str5");
  print(str4 + str5);
  print(str4 + " " + str5);
}

在这里插入图片描述

数值类型

/*
Dart数据类型:数值类型
*/

void main() {
  //1、int   必须是整型
  int a = 123;
  a = 45;
  print(a);

  //2、double  既可以是整型 也可是浮点型
  double b = 23.5;
  b = 24;
  print(b);

  //3、运算符
  // + - * / %
  var c = a + b;
  print(c);
}

在这里插入图片描述

布尔类型

/*
  Dart数据类型:布尔类型
  bool 值true/false
*/

void main() {
  //1、bool
  bool flag1 = true;
  print(flag1);

  //2、条件判断语句
  var flag = true;
  if (flag) {
    print('真');
  } else {
    print('假');
  }

  //在条件判断时不会自动进行类型的转换
  var a = 123;
  var b = '123';
  if (a == b) {
    print('a=b');
  } else {
    print('a!=b');
  }

  var c = 123;
  var d = 123;
  if (c == d) {
    print('c=d');
  } else {
    print('c!=d');
  }
}

在这里插入图片描述

List类型

/*
Dart数据类型: List(数组/集合)
*/

void main() {
  //1、第一种定义List的方式: []
  print(" l1:");
  var l1 = ["张三", 20, true];
  print(l1); //[张三, 20, true]
  print(l1.length); //3
  print(l1[0]); //张三
  print(l1[1]); //20

  //2、第二种定义List的方式: [], 但指定类型
  print(" l2:");
  var l2 = <String>["张三", "李四"];
  print(l2);

  print(" l3:");
  var l3 = <int>[12, 30];
  print(l3);

  //3、第三种定义List的方式: [], 增加数据, 通过[]创建的集合它的容量是可以变化的
  print(" l4:");
  var l4 = [];
  print(l4);
  print(l4.length);

  l4.add("张三");
  print(l4);
  print(l4.length);

  print(" l5:");
  var l5 = ["张三", 20, true];
  l5.add("李四");
  l5.add("zhaosi");
  print(l5);

  //4、第四种定义List的方式, 创建一个固定长度和类型的集合
  print(" l6:");
  var l6 = List.filled(2, "");
  print(l6);
  print(l6[0]);

  l6[0] = "张三"; //修改集合的内容
  l6[1] = "李四";
  print(l6); //[张三, 李四]
  // l6.add("王五"); //错误写法, 通过List.filled创建的集合长度是固定, 没法增加数据

  // 通过List.filled创建的集合长度是固定, 无法修改长度
  print(" l7:");
  var l7 = List.filled(2, "");
  print(l7.length);
  // l7.length = 0; //报错

  print(" l8:");
  var l8 = <String>["张三", "李四"];
  print(l8.length); //2
  l8.length = 0; //可以改变的
  print(l8); //[]

  print(" l9:");
  var l9 = List<String>.filled(2, "");
  l9[0] = "string";
  print(l9);
}

在这里插入图片描述

Map类型

/*
Dart数据类型: Maps(字典)  
*/

void main() {
  //第一种定义 Maps的方式
  var person = {
    "name": "张三",
    "age": 20,
    "work": ["程序员", "送外卖"]
  };

  print(person);
  print(person["name"]);
  print(person["age"]);
  print(person["work"]);

  //第二种定义 Maps的方式
  var p = new Map();
  p["name"] = "李四";
  p["age"] = 22;
  p["work"] = ["程序员", "送外卖"];
  print(p);
  print(p["age"]);
}

在这里插入图片描述

类型判断

当我们需要判断接收到的一个数据是什么类型时,我们可以用 is 关键词来判断

/*
Dart判断数据类型    
*/

void main() {
  var str = 123;
  if (str is String) {
    print('是string类型');
  } else if (str is int) {
    print('int');
  } else {
    print('其他类型');
  }
}

在这里插入图片描述

类型转换

  • Number类型转换成String类型:toString()
  • String类型转成Number类型:int.parse()double.parse(),一般用 double.parse(),因为 int.parse() 无法转换浮点型
void main() {
  //1、Number与String类型之间的转换
  String str1 = '123';
  var myNum1 = int.parse(str1);
  print(myNum1 is int);

  String str2 = '123.1';
  var myNum2 = double.parse(str2);
  print(myNum2 is double);

  String price = '12';
  var myNum3 = double.parse(price);
  print(myNum3);

  // try  ... catch: 处理异常
  String price1 = '';
  try {
    var myNum4 = double.parse(price1);
    print(myNum4);
  } catch (err) {
    print(0);
  }

  var myNum5 = 12;
  var str3 = myNum5.toString();
  print(str3 is String);

  // 2、其他类型转换成Booleans类型
  // isEmpty:判断字符串是否为空
  var str4 = '';
  if (str4.isEmpty) {
    print('str4空');
  } else {
    print('str4不为空');
  }

  var myNum6 = 123;
  if (myNum6 == 0) {
    print('myNum6为0');
  } else {
    print('myNum6非0');
  }

  var myNum7;
  print("myNum7: $myNum7");
  if (myNum7 == 0) {
    print('myNum7为0');
  } else {
    print('myNum7非0');
  }

  var myNum8;
  if (myNum8 == null) {
    print('空');
  } else {
    print('非空');
  }

  var myNum9 = 0 / 0;
  print("myNum9: $myNum9");
  if (myNum9.isNaN) {
    print('NaN');
  }
}

在这里插入图片描述

运算符

  • 算术运算符:+ - * / ~/ (取整) %(取余)
  • 关系运算符:== != > < >= <=
  • 逻辑运算符: ! && ||
  • 赋值运算符:
    • 基础赋值运算符:= ??=
    • 复合赋值运算符:+= -= *= /= %= ~/=
  • 三目运算符:??运算符:
  • 自增自减运算符:++ --

大部分运算符的规则和其它语言都一样

赋值运算符

基础赋值运算符:??=

void main() {
  // 基础赋值运算符  ??=
  // b??=23;  表示如果b为空的话, 就把23赋值给b

  int a = 6;
  a ??= 23;
  print(a);

  int? b; //int? 表示可为空的整型
  b ??= 23;
  print(b);
}

在这里插入图片描述

三目运算符

void main() {
  //1、三目运算符

  bool flag = false;
  String s = flag ? '我是true' : '我是false';
  print(s);

  //2、 ??运算符
  var a;
  var b = a ?? 10;
  print(b); //10

  var c = 22;
  var d = c ?? 10;
  print(d); //22
}

在这里插入图片描述

  • 23
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序喵正在路上

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值