1. 、关于 runApp()
  2.  
  3. 上面的实例代码中使用了 runApp() 方法,runApp 方法接收的指定参数类型为
  4.  
  5. Widget,即: runApp(Widget)。在 Flutter 的组件树(widget tree)中,会根据我们在 runApp
  6.  
  7. 法传入的 Widget 作为整个 App 根控件(root widget)。
  8.  
  9. 、关于 Widget
  10. 本实例中,控件树(widget tree)包含两个控件:. Center 控件使其子控件处于
  11.  
  12. 中间位置; .Text控件打印文本内容。runApp 方法强制将根控件覆盖屏幕,这意味着文本“你好
  13.  
  14. ,世界!”将显示在屏幕中心。
  15. Flutter 布局的机制的核心就是在 widget。控件(Widget) 定义一
  16.  
  17. 个元素(Element)的配置,在Flutter框架的层次结构中处于核心层。
  18. 所有的布局 widget 都有一个
  19.  
  20. child属性(例如:Center Container), 或者一个children 属性,如果他们需要一个 widget
  21.  
  22. 列表(例如 Row, Column, ListView 或者 Stack)
  23.  
  24. 一、注释
  25. Dart的注释分为3种:单行注释、多行注释、文档注释。
  26. 例如:// todo:待完成
  27. /* todo:待完成 多行注释可以嵌套。 */
  28. 文档注释以///或者/**开头。可以通过dartdoc命令导出文档。
  29.  
  30. 二、关键字(56个)
  31. if
  32. superdo
  33. switch
  34. assert
  35. else
  36. in
  37. this
  38. enum
  39. is
  40. throw
  41. true
  42. break
  43. new
  44. try
  45. case
  46. extends
  47. null
  48. typedef
  49. catch
  50. var
  51. class
  52. false
  53. void
  54. const
  55. final
  56. rethrow
  57. while
  58. continue
  59. finally
  60. return
  61. with
  62. for
  63. default
  64. 其中内置标志符有:(17个)
  65. abstract
  66. deferred
  67. as
  68. dynamic
  69. covariant
  70. export
  71. external
  72. factory
  73. get
  74. implements
  75. import
  76. library
  77. operator
  78. part
  79. set
  80. static
  81. typedef
  82. Dart2相对于Dart1新增的,支持异步功能的关键字有:(6个)
  83. async
  84. async*
  85. await
  86. sync*
  87. yield
  88. yield*
  89. 三、变量和常量
  90. (一)变量的声明,可以使用 varObject dynamic 关键字。
  91. 创建变量并初始化变量实例:如果对象不限于单一类型(没有明确的类型),请使用Object
  92.  
  93. dynamic关键字
  94. var name = '张三' ;
  95. Object name = '张三';
  96. dynamic name = '李四';
  97. String name = '张三' ; //代替var name = '张三';
  98.  
  99. //测试 数字类型的初始值是什么?
  100. int intDefaultValue;
  101. // assert 是语言内置的断言函数,仅在检查模式下有效
  102. // 在开发过程中, 除非条件为真,否则会引发异常。(断言失败则程序立刻终止)
  103. assert(intDefaultValue == null);
  104. print(intDefaultValue);//打印结果为null,证明数字类型初始化值是null
  105.  
  106. 如果您从未打算更改一个变量,那么使用 final const,不是var,也不是一个类型。
  107. 一个 final 变量只能被设置一次;const 变量是一个编译时常量。(Const变量是隐式的final。)
  108.  
  109. static const speed = ;//常量如果是类级别的,请使用 static const.flnal 或者 const 不
  110.  
  111. 能和 var 同时使用,
  112.  
  113. const speed = ; //速度(km/h)变量是一个编译时常量。(Const变量是隐式的final。)
  114. const double distance = 2.5 * speed; // 距离 = 速度 * 时间
  115.  
  116. final speed2 = ; //速度(km/h) // 一个final变量,只能被设置一次。
  117. final double distance2 = 2.5 * speed2; // 距离 = 速度 * 时间
  118.  
  119. 四、特殊数据类型
  120. numbers 数字 num有两个子类 int doublemath
  121. strings 字符串 使用单引号或双引号来创建一个字符串。单引号或者双引号里面嵌套使用引号。
  122.  
  123. 单引号里面嵌套单引号,或者//双引号里面嵌套双引号,必须在前面加反斜杠。三引号可多行字符
  124.  
  125. 串;声明raw字符串(前缀为r);toUpperCase()函数,把字母全部变成大写。==操作符测试两个对
  126.  
  127. 象是否相等。assert是断言
  128. var height = 48.0;
  129. print('当前标题的高度是$height'); //当前标题的高度是48.0
  130. String name = "张三";
  131. print("$name"+"是我们的部门经理"); // 张三是我们的部门经理
  132. String replaceStr = 'Android Studio';
  133. assert('你知道' +
  134. '${replaceStr.toUpperCase()}'
  135. + '最新版本是多少吗?' ==
  136. '你知道ANDROID STUDIO最新版本是多少吗?');
  137.  
  138. booleans 布尔;它有两个值,分别是:truefalse
  139. // 检查是否为空字符串
  140. var emptyStr = '';
  141. assert(emptyStr.isEmpty);
  142.  
  143. // 检查是否小于等于0
  144. var numberStr = ;
  145. assert(numberStr <= );
  146.  
  147. // 检查是否为null
  148. var nullStr;
  149. assert(nullStr == null);
  150.  
  151. // 检查是否为NaN
  152. var value = / ;
  153. assert(value.isNaN);
  154.  
  155. lists list集合(也称为数组);必须单独学习List constantList = const[,,];
  156. maps map集合Map companys = {'first': '阿里巴巴', 'second': '腾讯', 'fifth': '百度'};
  157.  
  158. runes 字符(用于在字符串中表示Unicode字符)
  159.  
  160. var clapping = '\u{1f44f}';
  161. print(clapping);
  162. print(clapping.codeUnits);
  163. print(clapping.runes.toList());
  164.  
  165. //使用String. fromCharCodes显示字符图形
  166. Runes input = new Runes(
  167. '\u2665 \u{1f605} \u{1f60e} \u{1f47b} \u{1f596} \u{1f44d}');
  168. print(new String.fromCharCodes(input));
  169.  
  170. 五、运算符
  171. ~/ 取商 %符号表示取余 三目运算符??
  172. 六、控制流程语句
  173. if(条件语句){
  174. 内容体
  175. }else{
  176. 内容体
  177. }
  178.  
  179. for(初始值;判断条件;循环后的语句){
  180. 内容体
  181. }
  182.  
  183. for(int i=;i<;i++){
  184. print(i);
  185. }
  186.  
  187. var array = [];
  188. for(var i=;i<;i++){
  189. array.add(()=> print(i));
  190. }
  191.  
  192. var numbers = [,,,,,,,,];
  193. numbers.foreach((number)=> print(number));
  194.  
  195. var list = [,,];
  196. for(var data in list){
  197. print(data);
  198. }
  199.  
  200. Dartfor循环里面可以使用标记:(比较有特色的地方)
  201. continue 标记名称从内部循环直接跳转到外部循环的下一轮循环
  202. break标记也可以用于跳出代码块。if (entry is Bad) break errorChecks; // 跳出代码块
  203.  
  204. //////////////
  205. //以下两种描述是等价的:
  206.  
  207. // 使用 continue
  208. for (int i = ; i < ; i++) {
  209. if (i.isEven) continue;
  210. print(i);
  211. }
  212.  
  213. // 使用 break.
  214. for (int i = ; i < ; i++) {
  215. labels: {
  216. // isEven 当且仅当该整数为偶数时才返回true
  217. if (i.isEven) break labels;
  218. print(i);
  219. }
  220. }
  221.  
  222. //////////////
  223. void switchExample(int foo) {
  224. switch (foo) {
  225. case :
  226. print("foo is 0");
  227. break;
  228. case :
  229. print("foo is 1");
  230. continue shared; // Continue使用在被标记为shared的子句中
  231. shared:
  232. case :
  233. print("foo is either 1 or 2");
  234. break;
  235. }
  236. }
  237. /////////////
  238. while(判断条件){
  239. 内容体
  240. }
  241.  
  242. //////////
  243.  
  244. do{
  245. 内容体
  246. } while(判断条件);
  247. ////////
  248. while(a>){
  249. print(a);
  250. }
  251. //////
  252. do{
  253. print(a);
  254. } while(a>);
  255. /////
  256. while(a>){
  257. if(b>){
  258. print(a);
  259. break;
  260. }
  261. }
  262. /////
  263. while(a>){
  264. if(b<){
  265. print(b);
  266. continue;
  267. }
  268. }
  269. //////////////////
  270. // 第一个是满足条件就进入 第二个是foreach遍历
  271. arrays
  272. .when((c)=>c.counts >=)
  273. .foreach((c)=>c.next());
  274. ///////////////
  275. switch case每一条非空case字子句以break结束
  276. ////////////////
  277. // 确保变量具有非空值
  278. assert(text != null);
  279. // 确保值小于100
  280. assert(number < );
  281. // 确保这是一个 https 网址
  282. assert(urlString.startsWith('https'));
  283. /////////////////
  284. // 确保变量具有非空值
  285. assert(text != null);
  286. // 确保值小于100
  287. assert(number < );
  288. // 确保这是一个 https 网址
  289. assert(urlString.startsWith('https'));
  290. assert(urlString.startsWith('https'),'URL ($urlString) should start with "https".');
  291.  
  292. 七、异常
  293. throw FormatException('Expected at least 1 section');
  294. void distanceTo(Point other) => throw UnimplementedError();
  295. 无论是否抛出异常,要确保某些代码运行,请使用finally子句
  296.  
  297. try {
  298. breedMoreLlamas();
  299. } finally {
  300. // 即使抛出异常 也会执行这句代码.
  301. cleanLlamaStalls();
  302. }
  303. finally子句在任何匹配的catch子句之后运行:
  304. try {
  305. breedMoreLlamas();
  306. } catch (e) {
  307. // 首先会处理异常
  308. print('Error: $e');
  309. } finally {
  310. // 然后执行这句语句
  311. cleanLlamaStalls();
  312. }

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基础语法的更多相关文章

  1. Dart:2.通过一个简单程序来理解Dart基础语法

    一 . 一个简单的 Dart 程序 // 这是程序执行的入口. main() { var number = 42; // 定义并初始化一个变量. printNumber(number); // 调用一 ...

  2. flutter--Dart基础语法(一)

    一.前言 Flutter 是 Google 开源的 UI 工具包,帮助开发者通过一套代码库高效构建多平台精美应用,Flutter 开源.免费,拥有宽松的开源协议,支持移动.Web.桌面和嵌入式平台. ...

  3. Swift与C#的基础语法比较

    背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...

  4. iOS-----正则表达式的基础语法

    正则表达式简单语法总结 一.什么是正则表达式 从概念上来说,正则表达式也是一门小巧而精炼的语言,它可以用来简化检索特定的字符串,替换特定字符等功能,有许多开发语言工具,都内嵌支持正则表达式.那么一个正 ...

  5. python之最强王者(2)——python基础语法

    背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...

  6. emmet 系列(1)基础语法

    emmet 系列(1)基础语法 emmet 是一个能显著提升开发html和css开发效率的web开发者工具 emmet基本上目前已知的编辑器都有相应的插件,各个编辑器的emmet插件的下载地址:点我下 ...

  7. Scala基础语法 (一)

    如果你之前是一名 Java 程序员,并了解 Java 语言的基础知识,那么你能很快学会 Scala 的基础语法. Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的. 我 ...

  8. Java基础语法

    java基础学习总结——基础语法1 一.标识符

  9. javascript中正则表达式的基础语法

    × 目录 [1]定义 [2]特点 [3]元字符[4]转义字符[5]字符组[6]量词[7]括号[8]选择[9]断言[10]模式[11]优先级[12]局限性 前面的话 正则表达式在人们的印象中可能是一堆无 ...

随机推荐

  1. spark 关联source

    IDEA就自动把jar包中的字节码反编译为Java源码,并且,我们可以直接下个断点调试程序,但是对于Scala,IDEA的反编译效果并不是很好,如下图所示: 2)提示“Source not found ...

  2. django后台的制作

    参考:http://zengestudy.blog.51cto.com/1702365/1902660 http://www.cnblogs.com/fnng/p/3737964.html 实现与后台 ...

  3. python-demo实例

    1.turtle库与蟒蛇案例 import turtle def drawSnake(rad,angle,len,neckrad): for i in range(len): turtle.circl ...

  4. Windows server 2008 R2实现多用户远程连接 (转)

    经常使用远程桌面的朋友可能会注意到,Windows server 2008 R2中,远程桌面最多只允许两个人远程连接,第三个人就无法连接过去,但是生产环境中有一些服务器可能有许多人需要连接上去,而微软 ...

  5. scu 4444 Travel

    题意: 一个完全图,有n个点,其中m条边是权值为a的无向边,其它是权值为b的无向边,问从1到n的最短路. 思路: 首先判断1和n被哪种边连通. 如果是被a连通,那么就需要全部走b的边到达n,选择最小的 ...

  6. Linux基础命令---显示登录用户w

    w 显示哪些用户登录,并且显示用户在干什么.报头按此顺序显示当前时间.系统运行时间.当前登录用户数以及过去1.5和15分钟的系统平均负载.接着为每个用户显示以下条目:登录名.TTY名称.远程主机.登录 ...

  7. Linux基础命令---切换用户su

    su 临时切换身份到另外一个用户,使用su切换用户之后,不会改变当前的工作目录,但是会改变一些环境变量. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUS ...

  8. vue生命周期图示中英文版Vue实例生命周期钩子

    vue生命周期图示中英文版Vue实例生命周期钩子知乎上近日有人发起了一个 “react 是不是比 vue 牛皮,为什么?” 的问题,Vue.js 作者尤雨溪12月4日正面回应了该问题.以下是尤雨溪回复 ...

  9. centos下搭建Jenkins持续集成环境(安装jenkins)

    1.安装JDK yum install -y java 2.安装jenkins 添加Jenkins库到yum库,Jenkins将从这里下载安装. 1 wget -O /etc/yum.repos.d/ ...

  10. 今天2.4寸tft触摸屏到手--刷屏驱动小结

    2010-04-29 21:28:00 根据给的51程序改成了iccavr,结果改错了2处.导致我找原因找了n久.不过也是一件好事,让我对80i更加熟悉了. 通过protues的逻辑分析仪,找到了问题 ...