当前位置: 首页 > java >正文

Flutter开发 dart语言基本语法

特点

Dart语言支持JIT与AOT。
Dart语言采用单线程模型。
Dart语言是强类型编程语言,但是允许弱类型语言式编程。

基本语法

1.变量和常量
变量
var、object、dynamic关键字或数据类型显式声明变量。

命名规则:

  • 变量名称必须由数字、字母、下划线或$组成;
  • 变量名开头不能是数字;
  • 变量名不能是保留字或关键字;
  • 变量名区分大小写;
void main() {//隐式声明var i = "hello word";print(i);var j; //定义变量时,未指定默认值,则该变量的数据类型是可变的。// j = 100;j = "hello";print(j);//用object定义变量,重新赋值时,类型可变Object k = 1;k = "qwe";print(k);//dynamic  重新赋值,类型可变dynamic m = 10;m = "asdadasd";print(m);//显式声明//整数int age = 90;//浮点类型double d = 2;//字符串String  str = "11111";
}

常量
使用final或者const定义常量。final或const定义的常量时必须初始化,初始化后的常量是只读的,不可变的。

  //常量final f = 10;print(f);const cc = 101;print(cc);final String str1 = "qwewqe";final double dd = 2.7;//final是正确的   const是错误的。// const 在“=”左边,声明的值一定是编译时常量。//当const用在“=”右边时,右边对象的整个状态值在编译时完全确定,并且对象被冻结且完全不可变。final date = DateTime.now();const date1 = DateTime.now();

2.数值类型

  1. Number(数值类型)
    dart语言中的包括int和double两种数据类型。
  var a = 10;//十进制10var h = 0xA;//十六进制10var d = 2.7;//十进制浮点型2.7//除号,算出来的值是double类型的int k = 10/2;//错double k2 = 10/2;//对
  1. string
  String str = "ha ha ha";String str2 = 'hello';//拼接String aStr = "hello";String bStr = " word";String cStr = aStr + bStr;String ddStr = "$aStr$bStr";print(aStr.indexOf("e"));//字符首次出现的位置  1print(aStr.lastIndexOf("e"));//字符最后出现的位置 1print(aStr.substring(1,3));//字符最后出现的位置 elprint(aStr.split("e"));//拆分字符串  [h, llo]print(aStr.toUpperCase());//转大写  HELLOprint(aStr.toLowerCase());//转小写  helloprint(aStr.startsWith("he"));//是否以he开头  trueprint(aStr.endsWith("lo"));//是否以lo开头  trueprint(aStr.contains("lo"));//是否包含lo  trueprint(aStr.replaceAll("he", "1111"));//替换he为111   1111lloprint(aStr.compareTo("abc"));//比较字符串 1表示左边的字符串大于右边,0相等,-1 小于

3.Boolean

 bool  flag = false;

4.List

  List names = ["张三", "李四", "王五"];List names2 = ["张三", "李四", "王五", 12];print(names.length); //长度 3print(names[1]); //李四//添加元素names.add("赵六"); //[张三, 李四, 王五, 赵六]print(names);//删除元素names.remove("李四"); //[张三, 王五, 赵六]print(names);//插入names.insert(1, 6666); //[张三, 6666, 王五, 赵六]print(names);//查找元素int i = names.indexOf(6666); // 1print(i);//将数组元素转化为由特定符号分割print(names.join("@"));//张三@6666@王五@赵六

5.Set
Dart语言中Set表示一个元素唯一且无序的集合,不能通过索引下标获取数据元素。

  var s = Set();s.add(1);s.add("张三");s.add(true);//list转set,会去掉重复的元素List<int> lists = [1, 2, 3, 4, 3, 2, 5];Set ss = lists.toSet(); // {1, 2, 3, 4, 5}print(ss);

6.Map

  Map person = {"id": "001", "name": "zhang san", "age": "25"};//输出所有的值print(person.values); //(001, zhang san, 25)//输出所有的键print(person.keys); //(id, name, age)//输出name的值print(person["name"]); //zhang san//添加键值对Map weight = {"weight": "120"};person.addAll(weight);print(person); //{id: 001, name: zhang san, age: 25, weight: 120}//删除键值对person.remove("name");//{id: 001, age: 25, weight: 120}print(person);

7.List、Set、Map的常用方法

forEach遍历

  //遍历List list = ["苹果","南瓜","西瓜"];list.forEach((element) {print(element);});I/flutter ( 2677): 苹果
I/flutter ( 2677): 南瓜
I/flutter ( 2677): 西瓜

map遍历用于修改元素的值

 List list = ["苹果", "南瓜", "西瓜"];var ll = list.map((e) {return e + "1";});print(ll);I/flutter ( 2677): (苹果1, 南瓜1, 西瓜1)

where用于过滤list或set中的数据元素,并返回一个集合。

  //保留大于3的值List list = [100, 1, 0, 2, 300, 150];var ll = list.where((element) {return element > 3;});print(ll);I/flutter ( 2677): (100, 300, 150)

any用于判断list或set中的数据元素只要有一个满足条件,返回值为true。

  List list = [100, 1, 0, 2, 300, 150];var has = list.any((element) {return element > 10;});print(has);var has1 = list.any((element) {return element > 1000;});print(has1);I/flutter ( 2677): true
I/flutter ( 2677): false

every用于判断list或set中的数据元素全部满足条件,返回值为true。

  List list = [100, 1, 0, 2, 300, 150];var f = list.every((element) {return element > 100;});print(f);var f2 = list.every((element) {return element > -1;});print(f2);I/flutter (20829): false
I/flutter (20829): true
http://www.xdnf.cn/news/16893.html

相关文章:

  • 基于单片机一氧化碳CO检测/煤气防中毒检测报警系统
  • 深入理解 Docker 容器网络:为什么用 host 网络模式能解决连通性问题?
  • Vue3 setup的两个注意点
  • Spring AI MCP 技术深度解析:从工具集成到企业级实战
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现道路车辆事故的检测识别(C#代码UI界面版)
  • LeeCode 88. 合并两个有序数组
  • RAGFLOW~Enable RAPTOR
  • 亚像素级精度的二维图像配准方法
  • 上海月赛kk
  • HCLP--ospf综合实验
  • RabbitMQ-镜像队列(Mirrored Queues)
  • VMware 下 Ubuntu 操作系统下载与安装指南
  • RAGFLOW~knowledge graph
  • Redis的ZipList、SkipList和ListPack之间的区别
  • 【Linux】重生之从零开始学习运维之Mysql
  • Au速成班-多轨编辑流程
  • STM32学习记录--Day5
  • 《C++》STL--list容器详解
  • EasyExcel 公式计算大全
  • 谷歌Firebase动态链接将失效:如何选择深度链接替代方案?
  • 11.Layout-Pinia优化重复请求
  • 51单片机入门:模块化编程
  • 利用 AI 在 iPhone 上实现 App 文本情绪价值评估(下)
  • 【string类常见接口】
  • 智能Agent场景实战指南 Day 28:Agent成本控制与商业模式
  • C语言(02)——标准库函数大全(持续更新)
  • Spring Boot + MongoDB:从零开始手动配置 MongoConfig 实战
  • C语言:冒泡排序
  • 【3】交互式图表制作及应用方法
  • kafka快速部署、集成、调优