在Flutter
中,变量分为两种类型
- 弱类型
- 强类型
弱类型
var
如果没有初始值,可以变成任何类型
var a;
// var a = ''; // 一旦赋值,就确定类型,不能随意改动
a = 'abc';
a = 123;
a = true;
a = {'key': '123'};
a = ['abc'];
print(a)
Object
动态任意类型, 编译阶段检查类型
Object a = '123';
a = 123;
a = [2222];
a.p();
dynamic
动态任意类型,编译接点不检查类型
dynamic a = '123';
a = 123;
a = [1111];
a.p();
比较 var
、dynamic
、Object
-
var
如果有初始值,则类型会被锁定
强类型
声明类型
类型声明后,类型会被锁定
String a;
a = '123';
a = 123
常见类型
名称 | 说明 |
---|---|
num | 数字 |
double | 浮点 |
bool | 布尔 |
String | 字符串 |
StringBuffer | 字符串 Buffer |
DateTime | 时间日期 |
Duration | 时间区间 |
List | 数组 |
Sets | 集合 |
Maps | key-value容器 |
enum | 枚举 |
String a = "123";
int i = 123;
double d = 0.12;
bool b = true服务器托管网;
DateTime dt = DateTime.now();
List l = [1, 2, 3, 4];
默认值
变量声明后未确定值的,默认都是 null
var a;
String a;
print(a);
assert(a == null)
assert
assert
与Objective-C
中的函数相同,检查点函数,如果不符合条件直接抛出错误并中止程序进程。只在 Debug
模式下生效。
使用场景
var
简化定义变量
不用明确变量类型
var服务器托管网 map = String, dynamic>{};
map['image'] = image;
map['title'] = title;
map['desc'] = desc;
- 如果不使用
var
,就要写成Map
查询参数定义
api
查询通用接口封装的时候,我们一般用动态类型。
如一个 api
请求
FutureResponseT>> getT>(
String path, {
MapString, dynamic>? queryParameters,
...
})
-
Map? queryParameters
查询参数值是动态
返回的实例对象
如分类实例定义
class Category {
int id; // 数字 id
String name; // 字符串 分类名称
String slug;
Category({this.id, this.name, this.slug});
...
}
-
int id
;String name
; 明确类型
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
夜视仪是一种使用先进技术来增强夜间视觉的设备,以像增强器为核心器件,利用微弱光照下目标所反射光线通过像增强器在荧光屏上增强为人眼可感受的可见图像来观察和瞄准目标,为人们在黑暗环境中观察和探索提供了方便和便利。夜视仪的原理是通过收集环境中微弱的光线,并将其电子放…