dart基础语法
- 、关于 runApp()
- 上面的实例代码中使用了 runApp() 方法,runApp 方法接收的指定参数类型为
- Widget,即: runApp(Widget)。在 Flutter 的组件树(widget tree)中,会根据我们在 runApp 方
- 法传入的 Widget 作为整个 App 的 根控件(root widget)。
- 、关于 Widget
- 本实例中,控件树(widget tree)包含两个控件:. Center 控件使其子控件处于
- 中间位置; .Text控件打印文本内容。runApp 方法强制将根控件覆盖屏幕,这意味着文本“你好
- ,世界!”将显示在屏幕中心。
- Flutter 布局的机制的核心就是在 widget。控件(Widget) 定义一
- 个元素(Element)的配置,在Flutter框架的层次结构中处于核心层。
- 所有的布局 widget 都有一个
- child属性(例如:Center 或 Container), 或者一个children 属性,如果他们需要一个 widget
- 列表(例如 Row, Column, ListView 或者 Stack) 。
- 一、注释
- Dart的注释分为3种:单行注释、多行注释、文档注释。
- 例如:// todo:待完成
- /* todo:待完成 多行注释可以嵌套。 */
- 文档注释以///或者/**开头。可以通过dartdoc命令导出文档。
- 二、关键字(56个)
- if
- superdo
- switch
- assert
- else
- in
- this
- enum
- is
- throw
- true
- break
- new
- try
- case
- extends
- null
- typedef
- catch
- var
- class
- false
- void
- const
- final
- rethrow
- while
- continue
- finally
- return
- with
- for
- default
- 其中内置标志符有:(17个)
- abstract
- deferred
- as
- dynamic
- covariant
- export
- external
- factory
- get
- implements
- import
- library
- operator
- part
- set
- static
- typedef
- Dart2相对于Dart1新增的,支持异步功能的关键字有:(6个)
- async
- async*
- await
- sync*
- yield
- yield*
- 三、变量和常量
- (一)变量的声明,可以使用 var、Object 或 dynamic 关键字。
- 创建变量并初始化变量实例:如果对象不限于单一类型(没有明确的类型),请使用Object或
- dynamic关键字
- var name = '张三' ;
- Object name = '张三';
- dynamic name = '李四';
- String name = '张三' ; //代替var name = '张三';
- //测试 数字类型的初始值是什么?
- int intDefaultValue;
- // assert 是语言内置的断言函数,仅在检查模式下有效
- // 在开发过程中, 除非条件为真,否则会引发异常。(断言失败则程序立刻终止)
- assert(intDefaultValue == null);
- print(intDefaultValue);//打印结果为null,证明数字类型初始化值是null
- 如果您从未打算更改一个变量,那么使用 final 或 const,不是var,也不是一个类型。
- 一个 final 变量只能被设置一次;const 变量是一个编译时常量。(Const变量是隐式的final。)
- static const speed = ;//常量如果是类级别的,请使用 static const.flnal 或者 const 不
- 能和 var 同时使用,
- const speed = ; //速度(km/h)变量是一个编译时常量。(Const变量是隐式的final。)
- const double distance = 2.5 * speed; // 距离 = 速度 * 时间
- final speed2 = ; //速度(km/h) // 一个final变量,只能被设置一次。
- final double distance2 = 2.5 * speed2; // 距离 = 速度 * 时间
- 四、特殊数据类型
- numbers 数字 num有两个子类 int 和 double。math库
- strings 字符串 使用单引号或双引号来创建一个字符串。单引号或者双引号里面嵌套使用引号。
- 单引号里面嵌套单引号,或者//双引号里面嵌套双引号,必须在前面加反斜杠。三引号可多行字符
- 串;声明raw字符串(前缀为r);toUpperCase()函数,把字母全部变成大写。==操作符测试两个对
- 象是否相等。assert是断言
- var height = 48.0;
- print('当前标题的高度是$height'); //当前标题的高度是48.0
- String name = "张三";
- print("$name"+"是我们的部门经理"); // 张三是我们的部门经理
- String replaceStr = 'Android Studio';
- assert('你知道' +
- '${replaceStr.toUpperCase()}'
- + '最新版本是多少吗?' ==
- '你知道ANDROID STUDIO最新版本是多少吗?');
- booleans 布尔;它有两个值,分别是:true和false
- // 检查是否为空字符串
- var emptyStr = '';
- assert(emptyStr.isEmpty);
- // 检查是否小于等于0
- var numberStr = ;
- assert(numberStr <= );
- // 检查是否为null
- var nullStr;
- assert(nullStr == null);
- // 检查是否为NaN
- var value = / ;
- assert(value.isNaN);
- lists list集合(也称为数组);必须单独学习List constantList = const[,,];
- maps map集合Map companys = {'first': '阿里巴巴', 'second': '腾讯', 'fifth': '百度'};
- runes 字符(用于在字符串中表示Unicode字符)
- var clapping = '\u{1f44f}';
- print(clapping);
- print(clapping.codeUnits);
- print(clapping.runes.toList());
- //使用String. fromCharCodes显示字符图形
- Runes input = new Runes(
- '\u2665 \u{1f605} \u{1f60e} \u{1f47b} \u{1f596} \u{1f44d}');
- print(new String.fromCharCodes(input));
- 五、运算符
- ~/ 取商 %符号表示取余 三目运算符??
- 六、控制流程语句
- if(条件语句){
- 内容体
- }else{
- 内容体
- }
- for(初始值;判断条件;循环后的语句){
- 内容体
- }
- for(int i=;i<;i++){
- print(i);
- }
- var array = [];
- for(var i=;i<;i++){
- array.add(()=> print(i));
- }
- var numbers = [,,,,,,,,];
- numbers.foreach((number)=> print(number));
- var list = [,,];
- for(var data in list){
- print(data);
- }
- Dart的for循环里面可以使用标记:(比较有特色的地方)
- continue 标记名称从内部循环直接跳转到外部循环的下一轮循环
- break标记也可以用于跳出代码块。if (entry is Bad) break errorChecks; // 跳出代码块
- //////////////
- //以下两种描述是等价的:
- // 使用 continue
- for (int i = ; i < ; i++) {
- if (i.isEven) continue;
- print(i);
- }
- // 使用 break.
- for (int i = ; i < ; i++) {
- labels: {
- // isEven 当且仅当该整数为偶数时才返回true
- if (i.isEven) break labels;
- print(i);
- }
- }
- //////////////
- void switchExample(int foo) {
- switch (foo) {
- case :
- print("foo is 0");
- break;
- case :
- print("foo is 1");
- continue shared; // Continue使用在被标记为shared的子句中
- shared:
- case :
- print("foo is either 1 or 2");
- break;
- }
- }
- /////////////
- while(判断条件){
- 内容体
- }
- //////////
- do{
- 内容体
- } while(判断条件);
- ////////
- while(a>){
- print(a);
- }
- //////
- do{
- print(a);
- } while(a>);
- /////
- while(a>){
- if(b>){
- print(a);
- break;
- }
- }
- /////
- while(a>){
- if(b<){
- print(b);
- continue;
- }
- }
- //////////////////
- // 第一个是满足条件就进入 第二个是foreach遍历
- arrays
- .when((c)=>c.counts >=)
- .foreach((c)=>c.next());
- ///////////////
- switch case每一条非空case字子句以break结束
- ////////////////
- // 确保变量具有非空值
- assert(text != null);
- // 确保值小于100
- assert(number < );
- // 确保这是一个 https 网址
- assert(urlString.startsWith('https'));
- /////////////////
- // 确保变量具有非空值
- assert(text != null);
- // 确保值小于100
- assert(number < );
- // 确保这是一个 https 网址
- assert(urlString.startsWith('https'));
- assert(urlString.startsWith('https'),'URL ($urlString) should start with "https".');
- 七、异常
- throw FormatException('Expected at least 1 section');
- void distanceTo(Point other) => throw UnimplementedError();
- 无论是否抛出异常,要确保某些代码运行,请使用finally子句
- try {
- breedMoreLlamas();
- } finally {
- // 即使抛出异常 也会执行这句代码.
- cleanLlamaStalls();
- }
- 该finally子句在任何匹配的catch子句之后运行:
- try {
- breedMoreLlamas();
- } catch (e) {
- // 首先会处理异常
- print('Error: $e');
- } finally {
- // 然后执行这句语句
- cleanLlamaStalls();
- }
1、关于 runApp()
上面的实例代码中使用了 runApp() 方法,runApp 方法接收的指定参数类型为
Widget,即: runApp(Widget)。在 Flutter 的组件树(widget tree)中,会根据我们在 runApp 方
法传入的 Widget 作为整个 App 的 根控件(root widget)。
2、关于 Widget 本实例中,控件树(widget tree)包含两个控件:1. Center 控件使其子控件处于
中间位置; 2.Text控件打印文本内容。runApp 方法强制将根控件覆盖屏幕,这意味着文本“你好
,世界!”将显示在屏幕中心。 Flutter 布局的机制的核心就是在 widget。控件(Widget) 定义一
个元素(Element)的配置,在Flutter框架的层次结构中处于核心层。 所有的布局 widget 都有一个
child属性(例如:Center 或 Container), 或者一个children 属性,如果他们需要一个 widget
列表(例如 Row, Column, ListView 或者 Stack) 。
一、注释Dart的注释分为3种:单行注释、多行注释、文档注释。例如:// todo:待完成/* todo:待完成 多行注释可以嵌套。 */文档注释以///或者/**开头。可以通过dartdoc命令导出文档。
二、关键字(56个)ifsuperdoswitchassertelseinthisenumisthrowtruebreaknewtrycaseextendsnulltypedefcatchvarclassfalsevoidconstfinalrethrowwhilecontinuefinallyreturnwithfordefault其中内置标志符有:(17个)abstractdeferredasdynamiccovariantexportexternalfactorygetimplementsimportlibraryoperatorpartsetstatictypedefDart2相对于Dart1新增的,支持异步功能的关键字有:(6个)asyncasync*awaitsync*yieldyield*三、变量和常量(一)变量的声明,可以使用 var、Object 或 dynamic 关键字。创建变量并初始化变量实例:如果对象不限于单一类型(没有明确的类型),请使用Object或
dynamic关键字var name = '张三' ;Object name = '张三';dynamic name = '李四';String name = '张三' ; //代替var name = '张三';
//测试 数字类型的初始值是什么? int intDefaultValue; // assert 是语言内置的断言函数,仅在检查模式下有效 // 在开发过程中, 除非条件为真,否则会引发异常。(断言失败则程序立刻终止) assert(intDefaultValue == null); print(intDefaultValue);//打印结果为null,证明数字类型初始化值是null
如果您从未打算更改一个变量,那么使用 final 或 const,不是var,也不是一个类型。一个 final 变量只能被设置一次;const 变量是一个编译时常量。(Const变量是隐式的final。)
static const speed = 100;//常量如果是类级别的,请使用 static const.flnal 或者 const 不
能和 var 同时使用,
const speed = 100; //速度(km/h)变量是一个编译时常量。(Const变量是隐式的final。) const double distance = 2.5 * speed; // 距离 = 速度 * 时间
final speed2 = 100; //速度(km/h) // 一个final变量,只能被设置一次。 final double distance2 = 2.5 * speed2; // 距离 = 速度 * 时间
四、特殊数据类型numbers 数字 num有两个子类 int 和 double。math库strings 字符串 使用单引号或双引号来创建一个字符串。单引号或者双引号里面嵌套使用引号。
单引号里面嵌套单引号,或者//双引号里面嵌套双引号,必须在前面加反斜杠。三引号可多行字符
串;声明raw字符串(前缀为r);toUpperCase()函数,把字母全部变成大写。==操作符测试两个对
象是否相等。assert是断言var height = 48.0;print('当前标题的高度是$height'); //当前标题的高度是48.0String name = "张三";print("$name"+"是我们的部门经理"); // 张三是我们的部门经理String replaceStr = 'Android Studio';assert('你知道' + '${replaceStr.toUpperCase()}' + '最新版本是多少吗?' == '你知道ANDROID STUDIO最新版本是多少吗?');
booleans 布尔;它有两个值,分别是:true和false // 检查是否为空字符串 var emptyStr = ''; assert(emptyStr.isEmpty);
// 检查是否小于等于0 var numberStr = 0; assert(numberStr <= 0);
// 检查是否为null var nullStr; assert(nullStr == null);
// 检查是否为NaN var value = 0 / 0; assert(value.isNaN);
lists list集合(也称为数组);必须单独学习List constantList = const[10,3,15];maps map集合Map companys = {'first': '阿里巴巴', 'second': '腾讯', 'fifth': '百度'};
runes 字符(用于在字符串中表示Unicode字符)
var clapping = '\u{1f44f}';print(clapping);print(clapping.codeUnits);print(clapping.runes.toList());
//使用String. fromCharCodes显示字符图形 Runes input = new Runes( '\u2665 \u{1f605} \u{1f60e} \u{1f47b} \u{1f596} \u{1f44d}');print(new String.fromCharCodes(input));
五、运算符~/ 取商 %符号表示取余 三目运算符??六、控制流程语句if(条件语句){ 内容体}else{内容体}
for(初始值;判断条件;循环后的语句){ 内容体}
for(int i=0;i<10;i++){ print(i);}
var array = [];for(var i=0;i<10;i++){ array.add(()=> print(i));}
var numbers = [1,2,3,4,5,6,7,8,9];numbers.foreach((number)=> print(number));
var list = [1,2,3];for(var data in list){ print(data);}
Dart的for循环里面可以使用标记:(比较有特色的地方)continue 标记名称从内部循环直接跳转到外部循环的下一轮循环break标记也可以用于跳出代码块。if (entry is Bad) break errorChecks; // 跳出代码块
////////////////以下两种描述是等价的:
// 使用 continuefor (int i = 0; i < 10; i++) { if (i.isEven) continue; print(i);}
// 使用 break.for (int i = 0; i < 10; i++) { labels: { // isEven 当且仅当该整数为偶数时才返回true if (i.isEven) break labels; print(i); }}
//////////////void switchExample(int foo) { switch (foo) { case 0: print("foo is 0"); break; case 1: print("foo is 1"); continue shared; // Continue使用在被标记为shared的子句中 shared: case 2: print("foo is either 1 or 2"); break; }}/////////////while(判断条件){ 内容体}
//////////
do{内容体} while(判断条件);////////while(a>5){ print(a);}//////do{print(a);} while(a>5);/////while(a>5){ if(b>5){ print(a); break; }}/////while(a>5){ if(b<10){ print(b); continue; }}//////////////////// 第一个是满足条件就进入 第二个是foreach遍历arrays .when((c)=>c.counts >=5) .foreach((c)=>c.next());///////////////switch case每一条非空case字子句以break结束////////////////// 确保变量具有非空值 assert(text != null);// 确保值小于100assert(number < 100);// 确保这是一个 https 网址assert(urlString.startsWith('https'));/////////////////// 确保变量具有非空值 assert(text != null);// 确保值小于100assert(number < 100);// 确保这是一个 https 网址assert(urlString.startsWith('https'));assert(urlString.startsWith('https'),'URL ($urlString) should start with "https".');
七、异常throw FormatException('Expected at least 1 section');void distanceTo(Point other) => throw UnimplementedError(); 无论是否抛出异常,要确保某些代码运行,请使用finally子句
try { breedMoreLlamas();} finally { // 即使抛出异常 也会执行这句代码. cleanLlamaStalls();}该finally子句在任何匹配的catch子句之后运行:try { breedMoreLlamas();} catch (e) { // 首先会处理异常 print('Error: $e'); } finally { // 然后执行这句语句 cleanLlamaStalls(); }
dart基础语法的更多相关文章
- Dart:2.通过一个简单程序来理解Dart基础语法
一 . 一个简单的 Dart 程序 // 这是程序执行的入口. main() { var number = 42; // 定义并初始化一个变量. printNumber(number); // 调用一 ...
- flutter--Dart基础语法(一)
一.前言 Flutter 是 Google 开源的 UI 工具包,帮助开发者通过一套代码库高效构建多平台精美应用,Flutter 开源.免费,拥有宽松的开源协议,支持移动.Web.桌面和嵌入式平台. ...
- Swift与C#的基础语法比较
背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...
- iOS-----正则表达式的基础语法
正则表达式简单语法总结 一.什么是正则表达式 从概念上来说,正则表达式也是一门小巧而精炼的语言,它可以用来简化检索特定的字符串,替换特定字符等功能,有许多开发语言工具,都内嵌支持正则表达式.那么一个正 ...
- python之最强王者(2)——python基础语法
背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...
- emmet 系列(1)基础语法
emmet 系列(1)基础语法 emmet 是一个能显著提升开发html和css开发效率的web开发者工具 emmet基本上目前已知的编辑器都有相应的插件,各个编辑器的emmet插件的下载地址:点我下 ...
- Scala基础语法 (一)
如果你之前是一名 Java 程序员,并了解 Java 语言的基础知识,那么你能很快学会 Scala 的基础语法. Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的. 我 ...
- Java基础语法
java基础学习总结——基础语法1 一.标识符
- javascript中正则表达式的基础语法
× 目录 [1]定义 [2]特点 [3]元字符[4]转义字符[5]字符组[6]量词[7]括号[8]选择[9]断言[10]模式[11]优先级[12]局限性 前面的话 正则表达式在人们的印象中可能是一堆无 ...
随机推荐
- spark 关联source
IDEA就自动把jar包中的字节码反编译为Java源码,并且,我们可以直接下个断点调试程序,但是对于Scala,IDEA的反编译效果并不是很好,如下图所示: 2)提示“Source not found ...
- django后台的制作
参考:http://zengestudy.blog.51cto.com/1702365/1902660 http://www.cnblogs.com/fnng/p/3737964.html 实现与后台 ...
- python-demo实例
1.turtle库与蟒蛇案例 import turtle def drawSnake(rad,angle,len,neckrad): for i in range(len): turtle.circl ...
- Windows server 2008 R2实现多用户远程连接 (转)
经常使用远程桌面的朋友可能会注意到,Windows server 2008 R2中,远程桌面最多只允许两个人远程连接,第三个人就无法连接过去,但是生产环境中有一些服务器可能有许多人需要连接上去,而微软 ...
- scu 4444 Travel
题意: 一个完全图,有n个点,其中m条边是权值为a的无向边,其它是权值为b的无向边,问从1到n的最短路. 思路: 首先判断1和n被哪种边连通. 如果是被a连通,那么就需要全部走b的边到达n,选择最小的 ...
- Linux基础命令---显示登录用户w
w 显示哪些用户登录,并且显示用户在干什么.报头按此顺序显示当前时间.系统运行时间.当前登录用户数以及过去1.5和15分钟的系统平均负载.接着为每个用户显示以下条目:登录名.TTY名称.远程主机.登录 ...
- Linux基础命令---切换用户su
su 临时切换身份到另外一个用户,使用su切换用户之后,不会改变当前的工作目录,但是会改变一些环境变量. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUS ...
- vue生命周期图示中英文版Vue实例生命周期钩子
vue生命周期图示中英文版Vue实例生命周期钩子知乎上近日有人发起了一个 “react 是不是比 vue 牛皮,为什么?” 的问题,Vue.js 作者尤雨溪12月4日正面回应了该问题.以下是尤雨溪回复 ...
- centos下搭建Jenkins持续集成环境(安装jenkins)
1.安装JDK yum install -y java 2.安装jenkins 添加Jenkins库到yum库,Jenkins将从这里下载安装. 1 wget -O /etc/yum.repos.d/ ...
- 今天2.4寸tft触摸屏到手--刷屏驱动小结
2010-04-29 21:28:00 根据给的51程序改成了iccavr,结果改错了2处.导致我找原因找了n久.不过也是一件好事,让我对80i更加熟悉了. 通过protues的逻辑分析仪,找到了问题 ...