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

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.lryc.cn/news/608248.html

相关文章:

  • [BJDCTF2020]EasySearch
  • 错误: 找不到或无法加载主类 原因: java.lang.ClassNotFoundException
  • 谷歌开源Agent框架ADK快速入门
  • 【Conda】配置Conda镜像源
  • 无人机数字图传技术的前沿探索与应用
  • 自动布局视图来实现聊天室的界面
  • AI Agent开发学习系列 - LangGraph(3): 有多个输入的Graph
  • 小智服务器Java安装编译(xinnan-tech)版
  • 算法: 字符串part02: 151.翻转字符串里的单词 + 右旋字符串 + KMP算法28. 实现 strStr()
  • LLM Prompt与开源模型资源(3)如何写一个好的 Prompt
  • 什么叫湖仓一体
  • 质数时间(二分查找)
  • GraphRag安装过程中的报错:系统找不到指定的文件(Could not install packages due to an OSError)
  • Day25-对称二叉树-
  • PyTorch 张量核心操作——比较、排序与数据校验
  • 边缘智能网关在水务行业中的应用—龙兴物联
  • 模拟激光相机工作站版本6.0 5.2.32 6.0.44 6.031 5.2.20
  • 双机并联无功环流抑制虚拟阻抗VSG控制【simulink仿真模型实现】
  • 详解Python标准库之并发执行
  • OneCode 3.0表达式从语法到执行的全链路设计
  • 文件同步神器-rsync命令讲解
  • MySQL学习从零开始--第八部分
  • Python中元组,字典,集合的易错题(含解析)
  • 译|Netflix 数据平台运营中基于机器学习自动修复系统
  • Docker--将非root用户添加docker用户组,解决频繁sudo执行输入密码的问题
  • Docker 部署与配置 MySQL 5.7
  • CMake 命令行参数完全指南 (1)
  • Ubuntu18网络连接不上也ping不通网络配置问题排查与解决方法
  • 2 安装 Docker 和 Jenkins:持续构建环境起步
  • 音视频学习(四十七):模数转换