-
使用 var 关键字: Dart 允许通过 var 关键字来创建变量,编译器会自动根据赋值来推断变量的类型。这种方式与 Swift 和 Kotlin 的变量创建类似。
var name = 'Bob';重点概念:
类型推断: Dart 是一种强类型语言,每个变量都有一个确定的数据类型。在上述示例中,name 被推断为 String 类型。
-
使用 Object 或 dynamic 关键字
Object name = 'Bob'; dynamic name = 'Bob'重点概念:
a. Dart中有两种类可以用来申明任何类型的对象,一个是Object,一个是dynamic。但是他们的本质是完全不同的。
Object类型: 在Dart中一切都是对象,所有的对象最终都继承于Object class,Dart不存在原始类型这一说法,数字,布尔类型,函数,甚至 null一切都是对象。
// 返回参数的bool类型值,只有 bool和 string 满足条件 bool convertToBool(Object arg) { if (arg is bool) return arg; if (arg is String) return arg.toLowerCase() == 'true' throw ArgumentError('Cannot convert $arg to a bool.'); }dynamic: 类型的变量可以接受任何类型的值,并允许执行任何操作。编译时不检查成员的存在性,但是在运行时,如果调用的成员方法或变量不存在,就会出现runtime error。如果你想要灵活的动态调度,dynamic就是正确的选择。一句话,dynamic就是告诉编译器不用来检查我,运行时再说。 对于dynamic的使用,在网络请求后的json解析绝对是常见的场景之一。当我们通过接口拿到json字符串时,格式化后将其赋值给Map<String, dynamic>。这时我们并不用关心返回的json中value的精确类型。当我们使用时再进行精确的类型转换。
-
通过明确的类型申明来创建
String name = 'Bob';