Dart基础——Dart语法
本文主要介绍Dart开发常用的一些语法
基础语法
Final,Const定义常量
Const 变量在编译时就已经固定。
Final 变量或类变量在第一次使用时被初始化,懒加载。
Const不能定义对象 Final能定义对象
例:
//可以省略String这个类型声明
final str = "hi world";
//final String str = "hi world";
const str1 = "hi world";
//const String str1 = "hi world";
定义多行字符串
String str ="""
保留换行的字符串
可以在编译器里换行
""";
String str2 ='''
保留换行的字符串
可以在编译器里换行
''';
print(str);
print(str2);
double类型初始化时可以赋值为int型
double num1 = 1.0;
double num2= 1;
print(num1.runtimeType);
print("----");
print(num2.runtimeType);
Map类型取值map[“key”] 赋值同理
Map testMap = {};
testMap["flag"] = true;
print(testMap["flag"]);
在List类型中使用if语句
var promoActive = true;
var nav = ['Home','Furniture','Plants',if (promoActive) 'Outlet'
];
print(nav);
在List类型中使用For语句
var listOfInts = [1, 2, 3];
var listOfStrings = ['#0',for (var i in listOfInts) '#$i'
];
print(listOfStrings);
is关键字判断数据类型
int num = 1;
print(num is String);
String str = "测试";
print(str is String);
~/取整运算符
double num = 5;
print( num ~/ 2);
//5除2取整
字符串形式输出两个变量
String str1 = "str1";
String str2 = "str2";
print("$str1 $str2");
flag == true ? 我是true” : ”我是false” 三目运算符
String str = "三目运算符";
print(str == "三目运算符"?"我是true":"我是false" );
int.parse(str) String类型转int
num.toString()int类型转String
double.toInt() double类型转int
int num = 1;
double doubleNum =1.0;
String str = "1";
print(int.parse(str).runtimeType);
print(num.toString().runtimeType);
print(doubleNum.toInt().runtimeType);
isEmpty判断字符串是否为空
String str1 = "";
print(str1.isEmpty);
String str2 = "1";
print(str2.isEmpty);
String str3;
//此行代码会报错,null不能调用isEmpty
print(str3.isEmpty);
变量或方法前加入下划线表示私有
String _privateStr = "私有变量";
_privateFunction(){print("私有方法");
}
import关键字用于实现类导入,as给导入的类起别名
import 'dart:math' as math;
if语句只支持bool类型,不支持直接使用空数据判断
String str;
//不合法
if(str){
}
//合法
if(str != null){
}
List的扩展运算符“…”和空值判断扩展运算符“…?”
"…"支持将一个集合添加到另一个集合里
List list1 = [1,2,3];
List list2=[-1,0,...list1];
print(list2);
List list3;
// ...?运算符 如果为空就不插入
List list4 = [0,...?list3];
print(list4);
级联操作符。通过级联操作符可以对类的内部成员进行链式调用,
级联运算符 (…) 可以实现对同一个对像进行一系列的操作。 除了调用函数, 还可以访问同一对象上的字段属性。
var button = Button() // 获取对象。..text = 'Confirm' // 调用成员变量。..classes.add('important')..onClick.listen((e) => window.alert('Confirmed!'));
第一句创建对象。获取的对象依次执行级联运算符后面的代码, 代码执行后的返回值会被忽略。
上面的代码等价于:
var button = Button();
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));
赋值操作符“??”、“??=”和“~/”及判空操作符“?
String str;
print(str ?? 1);//如果str为空 返回1
str ??= "1"; //如果str为空 将str赋值为1
print(str);
int num = 1;
num?.toString();//如果str为空 不执行toString;
print(num.runtimeType);
int num1;
num1?.toString();//如果str为空 不执行toString;
print(num1.runtimeType == Null);
var 和 dynamic声明变量
Dart属于强类型语言,但可以用var声明变量,Dart对于var声明会自推导出数据类型。实际上var是编译期的语法糖, 而dynamic声明才表示动态类型,dynamic被编译后是一个object类型,在编译期间不对任何的类型进行检查,而是在运行时对类型进行检查。
String 和 int没有默认的类型转换,‘123’不等于123
String str = "1";
int num = 1;
print(str == num);
指定了数据类型之后不能重新赋值其他类型的数据
String str = "test";//此行代码会报错
str = 1;
函数相关
函数简写
对于只包含一个表达式的函数,可以使用简写语法
printFunc(String str)=> print(str) ;//等同于
//printFunc(String str) {
// print(str);
//}
函数作为参数传递
_test(){
execute(() => print("func被执行了"));
execute1(callback);}void execute(var func) {
func();}void execute1(var callback){
callback("callback被执行了");}callback(str){
print(str);}
初始化列表
除了调用超类构造函数之外, 还可以在构造函数体执行之前初始化实例变量。 各参数的初始化用逗号分隔。
// 在构造函数体执行之前,
// 通过初始列表设置实例变量。
Point.fromJson(Map<String, num> json): x = json['x'],y = json['y'] {//这里是构造函数体print('In Point.fromJson(): ($x, $y)');
}
可选的命名参数
定义函数时,使用{param1, param2, …},放在参数列表的最后面,用于指定命名参数。例如:
//设置[bold]和[hidden]标志
void enableFlags({bool bold, bool hidden}) {
// ...
}
调用函数
enableFlags(bold: true, hidden: false);
闭包
Dart 的闭包是定义在方法里面的方法,其特性:
闭包是一个对象
闭包定义在其他方法内部
闭包可以访问外部方法的布局变量,并持有其状态。这是闭包的最大用途,通过闭包的方式把一个方法内部的属性暴露出去,因为方法是可以返回方法的,Dart 中方法也是对象一样可以当做返回值处理
sum(){var num = 0;sum2(){
num++;
print(num);}return sum2;// 也可以这么写,匿名的方式用的最多return (){
num++;
print(num);};
}// 多调用闭包几次
void main(){Function a = sum();a();a();a();a();a();a();
}~~~~~~~~~~log~~~~~~~~~~
1
2
3
4
5
6
可以理解sum()就是一个对象,在初始化对象时,数值a已经被确定为0,再次调用a()时,没有再次执行var num = 0;,因为没有重新初始化类,所以赋值操作不会再执行一次。
纸上得来终觉浅,绝知此事要躬行。
Dart基础——Dart语法相关推荐
- Flutter的优势以及Dart基础语法
1.为什么要学习Flutter? 对于移动端开发人员来说,跨平台技术一直是关注的重点,从H5,React Native到Flutter,我们似乎一直在寻找一种能"一套代码,多端运行" ...
- Dart基础知识之main()函数介绍
Dart基础知识之main()函数介绍 main()函数 main()函数,这是一种特殊的.必需的顶级函数,应用程序从这里开始执行(重要)!!! print()函数 显示输出,把内容显示在屏幕上 字符 ...
- Dart基础学习02--变量及内置类型
Dart基础学习02--变量及内置类型 Dart中的变量 首先看一个变量的定义和赋值 var name = 'Bob'; 在Dart中变量名都是引用,这里的name就是一个指向值为Bob的字符串的引用 ...
- Dart基础语言 — Runes
Dart基础语言 - Runes Runes Runes 对象是一个 32位 字符对象,用来表示一个字. 这样设计也是考虑兼容 UTF-16 四个字节的情况. length 和 runes.lengt ...
- Dart基础-泛型和库
泛型 如果你看过API文档的基本类型数组和列表,你会发现实际上所有都是泛型,使用泛型可以提高代码的可读性 var names = new List<String>(); names.add ...
- 【Dart】Dart语言介绍和Flutter之间的关系
Dart Dart是一种开源.面向对象.类C语言的编程语言,由Google在2011年推出.它支持强类型,可选类型和基于类的面向对象编程,同时还具有异步编程和扩展方法的能力.Dart最初是设计为Web ...
- mysql怎样查表的模式_mysql常用基础操作语法(四)--对数据的简单无条件查询及库和表查询【命令行模式】...
1.mysql简单的查询:select 字段1,字段2... from tablename; 如果字段那里写一个*,代表查询所有的字段,等同于指定出所有的字段名,因此如果要查询所有字段的数据,一般都是 ...
- 基础SQL语法及使用(入门级)
基础SQL语法 基础 1.建表(CREATE\TABLE...) 2.删除表(DORP\TABLE) 3.修改表插入列(ALTER\TABLE\ADD\DROP\COLUMN\CHANGE) 4.插入 ...
- 整理总结:零基础英语语法
参考资料:<零基础英语语法> 文章目录 参考资料:<零基础英语语法> 一.词法篇 1.实词 1.名词 I. 根据意义分为专有名词和普通名词 1. 专有名词 2.普通名词 3.名 ...
最新文章
- 计算机计算能力,计算机/电脑为什么拥有计算能力
- HTML5+CSS学习心得
- java判断字符串是什么编码_java可供判断某字符串是什么编码的一行代码
- C#LeetCode刷题之#344-反转字符串​​​​​​​(Reverse String)
- Raid技术精简总结
- java随机取数组_java基础自动数组(获取随机数组的最大数和最小数)
- Python创建二维数组
- Hibernate 的HQL和sql有什么区别
- C语言深度剖析-----数组基础
- uni-app image组件当显示不出图片时显示默认图片
- VC “变速齿轮”再研究
- 虚拟化技术——虚拟存储
- 利用html5实现的飞雪效果代码实例
- 牛客小白月赛21 I.I love you
- Qt 串口调试软件自动发送数据
- 专属微信公众号消息推送(java版)
- Excel Application对象应用
- html5语义化标签及优点
- 人人农场机器人v3.0测试版 正式发布
- 安装JDK和tomcat环境变量配置
热门文章
- 工具资源 - 收藏集 - 掘金
- MAC系统IDEA工具栏没有svn图标,svn项目也不显示修改信息
- 综合门户html模版,简约时尚门户网站html静态模板 - 我爱模板网 www.5imoban.net
- ai前世识别_ai人脸识别查找前世今生
- 手机相机里面的m_我的数码相机设置里面有个图像尺寸分L、M、S,有何用
- php怎么修改文件的内容,PHP问题:php如何修改文件内容
- oracle19c的版本号_Oracle Database 20c/19c/18c/12c发布的新特性介绍
- 焊接件技术要求怎么写_不锈钢焊接技术要求怎么写哇?
- 五、数字签名及存在的问题
- (iOS开发) 自定义悬浮按钮