test.dart
## 变量
1. 使用var声明变量
2. 默认值为**null**
3. 使用**final**声明一个只能赋值一次的变量
~~~
void main(){
var a;
console.log(a);//null
a = 10;
print(a);//10
a = "xxxx";
print(a)//xxx
final c =10;
c = 50;//报错
}
~~~
## 常量
1. 使用const声明常量
2. 使用const声明的必须是编译期常量(编译阶段就能知道它的值)
3. final和const是有本质区别的。
~~~
const d =20;
d =5;//报错,常量不能修改
~~~
## 内置类型
1. 数值型-Number
2. 字符串-String
3. 布尔型-Boolean
4. 列表-List
5. 键值对-Map
6. Runes、Symbols
## 数值型
num:整型(int),浮点型(double)
~~~
void main(){
num a =10;
a = 12.5; //可以
int b = 20;
b = 20.5 //报错
double c = 10.4;
c = 30; //报错
}
~~~
## 数值型操作
1. 运算符:加减乘除 %(取余) ~/(取整)
2. 常用属性:isNaN,isEven,isOdd等
3. 常用方法 abs()(绝对值),round()(四舍五入)floor(),ceil(),toInt(),toDouble()
~~~
void main(){
num a =10;
a = 12.5; //可以
int b = 20;
//b = 20.5 //报错
double c = 10.4;
//c = 30; //报错
print(0.0/0.0) 是NaN
print(b.isEven)
print(b.isOdd)
int e = -100;
print(e.abs())
}
~~~
## 字符串(string)
1. 使用单引号,双引号创建字符串
2. 使用三个引号或三个双引号创建多行字符串
3. 使用r创建元素raw字符串
~~~
String str1 = 'Hello';// ""
String str2 = '''hello
Dart ''';//或"""
print(str2);
String str3 = 'hello \n Dart';//换行
print(str3);
String str4 = r'hello \n Dart';//直接打印
print(str4);
~~~
## 字符串操作
1. 运算符+、*、==(比较)、[](获取某标的字符)
2. 插值表达式:${expression}
3. 常用属性:length,isEmpty,isNotEmpty
~~~
String str5 = "This is my test";
print(str5 + "xxx");
print(str5 * 5);//输出5遍
int a = 1;
int b = 2;
print("a + b = ${a + b}");
print("a = $a");
print(str5.isEmpty)
~~~
## 常用方法
1. contains() 是否包含true false,subString():截取字符串
2. startsWidth() 是否以一个字符串开头或结尾,endsWidth();
3. indexOf(), lastIndexOf()
4. toLowerCase(), toUpperCase()
5. trim(),trimLeft(), trimRight()
6. split() 分割字符串,replaceXXX() 替换(replaceAll,replaceFirst,replaceAllMapped,replaceRange,replaceFirstMapped)
## 布尔型
1. 使用bool 表示布尔型类型
2. 布尔值只有true,false
~~~
bool isTrue = true;
~~~
## 列表(List)
### 创建
1. 创建List:var list = [1, 2, 3];
2. 创建**不可变**的List:var list = const[1, 2, 3];
3. 构造创建:var list = new List();
~~~
var list1 = [1, 2, 3, "Dart", true];
print(list1);
~~~
## 常用操作
1. [],length
2. add(), insert()
3. remove(), clear()
4. indxOf(), lastIndexOf()
5. sort()(排序,正序), sublist()
6. shuffle(), asMap(), forEach()
~~~
var list = ['hello', 'dart'];
list.add('new');
//list.insert(index,element);
list.insert(1, "java");
print(list);
list.remove('java');//移除值
print(list);
list.removeAt(list.length-1);//根据下标移除
print(list);
//list.clear();//清空
print(list.indexOf('dart')); //-1 或位置
list.sort();
print(list.sublist(1));
list.forEach(print);
~~~
forEach的实现方法
~~~
void forEach(void f(E element){
for(E element in this) f(element);
})
~~~
forEach中传入的是一个方法
list方法中还有:
addAll,asMap,cast,castFrom,copyRange,fillRange,firt,getRange,insert,insertAt
## Map
### 创建
1. 创建Map:var language = { 'first': 'Dart'};
2. 创建不可变Map:var language = const { 'first': 'Dart'};
3. 构造创建:var language = new Map();
### 常用操作
1. [], length(map可以获取长度)
2. isEmpty(), isNotEmpty()
3. keys, values
4. containsKey(),containsValue()
5. remove()
6. forEach()
~~~
var map = {'first': 'dart', 'second': 'javascript'};
print(map.keys);
print(map.values);
print(map.containsKey('first'));
print(map.containsValue('dart'));
map.forEach(f);
void f(key, value){
print("key= $key,value = $value")
}
var list = ["1","2", "3"];
print(list.asMap());//list转为map
~~~
map的forEach要传入两个值
~~~
void forEach(void f(K key, V value){
})
~~~
## dynamic(动态类型)
~~~
var a ;
a = 10;
a = "Dart";
dynamic b = 20;
b = "javascript";
//泛型
var list = new List<dynamic>();
list.add(1);
list.add('javascript');
print(list);
~~~
- 空白目录
- Flutter入门
- 课程简介
- 开发环境搭建
- 常用组件讲解
- 案例实战
- Dart编程语言入门
- 介绍和开发准备
- 数据类型
- 运算符
- 控制流语句
- 方法
- 面向对象1
- 面向对象2
- 枚举&类型
- Flutter中文网
- Widget框架总览
- 在Flutter中构建布局
- Flutter for Web开发者
- Flutter入门实战
- flutter介绍
- Flutter目录结构,各种组件
- Container、Text
- 图片组件Image
- ListView
- 动态组件
- GridView组件
- 页面布局Padding,Row,Column,Expanded,Icon
- Stack层叠组件,Align,Positioned
- AspectRatio,Cart
- wrap组件
- 组件汇总
