本文主要介绍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语法相关推荐

  1. Flutter的优势以及Dart基础语法

    1.为什么要学习Flutter? 对于移动端开发人员来说,跨平台技术一直是关注的重点,从H5,React Native到Flutter,我们似乎一直在寻找一种能"一套代码,多端运行" ...

  2. Dart基础知识之main()函数介绍

    Dart基础知识之main()函数介绍 main()函数 main()函数,这是一种特殊的.必需的顶级函数,应用程序从这里开始执行(重要)!!! print()函数 显示输出,把内容显示在屏幕上 字符 ...

  3. Dart基础学习02--变量及内置类型

    Dart基础学习02--变量及内置类型 Dart中的变量 首先看一个变量的定义和赋值 var name = 'Bob'; 在Dart中变量名都是引用,这里的name就是一个指向值为Bob的字符串的引用 ...

  4. Dart基础语言 — Runes

    Dart基础语言 - Runes Runes Runes 对象是一个 32位 字符对象,用来表示一个字. 这样设计也是考虑兼容 UTF-16 四个字节的情况. length 和 runes.lengt ...

  5. Dart基础-泛型和库

    泛型 如果你看过API文档的基本类型数组和列表,你会发现实际上所有都是泛型,使用泛型可以提高代码的可读性 var names = new List<String>(); names.add ...

  6. 【Dart】Dart语言介绍和Flutter之间的关系

    Dart Dart是一种开源.面向对象.类C语言的编程语言,由Google在2011年推出.它支持强类型,可选类型和基于类的面向对象编程,同时还具有异步编程和扩展方法的能力.Dart最初是设计为Web ...

  7. mysql怎样查表的模式_mysql常用基础操作语法(四)--对数据的简单无条件查询及库和表查询【命令行模式】...

    1.mysql简单的查询:select 字段1,字段2... from tablename; 如果字段那里写一个*,代表查询所有的字段,等同于指定出所有的字段名,因此如果要查询所有字段的数据,一般都是 ...

  8. 基础SQL语法及使用(入门级)

    基础SQL语法 基础 1.建表(CREATE\TABLE...) 2.删除表(DORP\TABLE) 3.修改表插入列(ALTER\TABLE\ADD\DROP\COLUMN\CHANGE) 4.插入 ...

  9. 整理总结:零基础英语语法

    参考资料:<零基础英语语法> 文章目录 参考资料:<零基础英语语法> 一.词法篇 1.实词 1.名词 I. 根据意义分为专有名词和普通名词 1. 专有名词 2.普通名词 3.名 ...

最新文章

  1. 计算机计算能力,计算机/电脑为什么拥有计算能力
  2. HTML5+CSS学习心得
  3. java判断字符串是什么编码_java可供判断某字符串是什么编码的一行代码
  4. C#LeetCode刷题之#344-反转字符串​​​​​​​(Reverse String)
  5. Raid技术精简总结
  6. java随机取数组_java基础自动数组(获取随机数组的最大数和最小数)
  7. Python创建二维数组
  8. Hibernate 的HQL和sql有什么区别
  9. C语言深度剖析-----数组基础
  10. uni-app image组件当显示不出图片时显示默认图片
  11. VC “变速齿轮”再研究
  12. 虚拟化技术——虚拟存储
  13. 利用html5实现的飞雪效果代码实例
  14. 牛客小白月赛21 I.I love you
  15. Qt 串口调试软件自动发送数据
  16. 专属微信公众号消息推送(java版)
  17. Excel Application对象应用
  18. html5语义化标签及优点
  19. 人人农场机器人v3.0测试版 正式发布
  20. 安装JDK和tomcat环境变量配置

热门文章

  1. 工具资源 - 收藏集 - 掘金
  2. MAC系统IDEA工具栏没有svn图标,svn项目也不显示修改信息
  3. 综合门户html模版,简约时尚门户网站html静态模板 - 我爱模板网 www.5imoban.net
  4. ai前世识别_ai人脸识别查找前世今生
  5. 手机相机里面的m_我的数码相机设置里面有个图像尺寸分L、M、S,有何用
  6. php怎么修改文件的内容,PHP问题:php如何修改文件内容
  7. oracle19c的版本号_Oracle Database 20c/19c/18c/12c发布的新特性介绍
  8. 焊接件技术要求怎么写_不锈钢焊接技术要求怎么写哇?
  9. 五、数字签名及存在的问题
  10. (iOS开发) 自定义悬浮按钮