Legendary

李洋的学习笔记


Dart基础

<h3>一、变量:</h3> <h4>1、变量声明:</h4> <ul> <li>推断类型:声明一个任意类型的变量,将字符串传入,则将该变量推断为String类型 <pre><code>var name = 'Jack';</code></pre></li> <li>动态(对象)类型类型:对象不限定为单个类型 <pre><code>dynamic any1 = 'hello'; dynamic any2 = 12; dynamic any3 = { 'name':'Jack', 'age':12 }</code></pre></li> <li>显示声明类型: <pre><code>String name = 'Jack'; int age = 12;</code></pre></li> </ul> <h4>2、默认值:</h4> <blockquote> <p>所有未初始化的变量默认值是 <strong>null</strong></p> </blockquote> <pre><code>int age;//null</code></pre> <h4>3、常量:</h4> <ul> <li>Final:值只能被设置一次 <pre><code>final name = 'Jack'; final String firstName = 'Jack';</code></pre></li> <li>Const:值在编译时就已经固定 <pre><code>const pi = 3.14; //pi = 3.1415;//error</code></pre></li> </ul> <h3>二、内建类型:(基本数据类型)</h3> <h4>1、Number</h4> <pre><code>&gt; 1. int: 整数值不大于64位 &gt; 2. double: 64位(双精度)浮点数</code></pre> <h4>2、String</h4> <pre><code>&gt; 1.通过单引号或者双引号创建 &gt; 2.连续三个单引号或者三个双引号实现字符串模板创建 &gt; 3.通过 ${expression} 的方式内嵌表达式,如果表达式只有一个标识符,{}可以省略 &gt; 4.== 运算符用来测试两个对象是否相等。 在字符串中,如果两个字符串包含了相同的编码序列,那么这两个字符串相等,即:使用了内嵌表达式的字符串与纯字符串也相等。 &gt; 5.字符串用 + 连接 &gt; 6.使用 r 前缀,可以创建 “原始 raw” 字符串,'\'不再是转义,${}不是表达式</code></pre> <h4>3、Bealoon</h4> <pre><code>&gt; 只有字面量 true 和 false 是布尔类型,检查值是否为真时需要明确判断,`if(a==0)`、`assert(a.isEmpty)`、`assert(a.isNaN)`等</code></pre> <h4>4、List(Array)</h4> <pre><code>&gt; 1.长度:list.length,索引从0开始 &gt; 2.在 List 字面量之前添加 const 关键字,可以定义 List 类型的编译时常量,此时该List不可修改</code></pre> <ul> <li> <p>Set</p> <blockquote> <p>1.元素唯一且无需的集合:{&quot;hello&quot;,&quot;world&quot;} 2.要创建一个空集,要使用前面带有类型参数的<code>{}</code>,或者将<code>{}</code>赋值给Set类型</p> <pre><code>var name = &lt;String&gt;{}; Set&lt;String&gt; sex = {}; //var name = {}; //这样会是创建一个Map,而不是Set,相当于 Map&lt;dynamic,dynamic&gt; name = {}</code></pre> <p>3.使用<code>add()</code>或<code>addAll()</code>为已有的Set添加元素:</p> <pre><code>var firstSet = &lt;String&gt;{}; var addSet = {'hello','world'}; firstSet.add('dart'); firstSet.addAll(addSet);</code></pre> <p>4.使用<code>.length</code>获取Set中的元素个数 5.在Set字面量前面增加<code>const</code>来创建一个Set常量,不可修改</p> </blockquote> </li> <li> <p>Map</p> <blockquote> <p>1.关联keys和values的对象,key和value可以是任何类型的对象 2.在一个Map中,一个key只能出现一次,value无限制 3.Map的读取、赋值与JavaScript相似 4.在Map字面量前面添加<code>const</code>来创建Map常量</p> </blockquote> </li> <li>Rune(用于在字符串中表示 Unicode 字符)</li> <li>Symbol</li> </ul> <h2>三、函数</h2> <blockquote> <p>函数也是对象,类型为Function,可以被赋值给变量或作为参数传递给其他函数,也可以把Dart类的实例当做方法来调用</p> </blockquote> <pre><code>``` 返回值类型 函数名(参数类型 参数1,...){ //函数体 return 返回值; } 返回值类型 函数名(参数类型 参数) =&gt; 返回值; ```</code></pre> <h4>1、 可选参数:命名参数或位置参数</h4> <ul> <li> <p>命名可选参数:</p> <pre><code>enableFlags(bold: true, hidden: false); // Sets the [bold] and [hidden] flags ... void enableFlags({bool bold, bool hidden}) {...} //使用 `required` 表示此参数是必填参数 //required 被定义在 meta package 中,`package:meta/meta.dart` 或 `package:flutter/material.dart` const Scrollbar({Key key, @required Widget child})</code></pre> </li> <li> <p>位置可选参数:将参数放在<code>[]</code>内表示参数是可选的</p> <pre><code>String say(String from,String msg,[String device]){ var result = '$from says $msg'; if(device != null) { result = '$result with a $device; } return result; } </code></pre> </li> <li>默认参数</li> </ul>

页面列表

ITEM_HTML