csdn推荐
1.3 使用场景 var 简化定义变量
不用明确变量类型
var map = {};
map["image"] = image;
map["title"] = title;
map["desc"] = desc;
这里不用var,就要写成Map
查询参数定义
api 查询通用接口封装的时候,我们一般用动态类型
如一个 api 请求
Future<Response> get(
String path, {
Map queryParameters,
...
});
Map? queryParameters, 查询参数值是动态
返回的实例对象
如分类实例定义
class Category {
int id; // 数字 id
String name; // 字符串 分类名称
String slug;
Category({this.id, this.name, this.slug});
...
}
int id;String name;明确类型
2. 常量 final 和 const 2.1 相同点 类型声明可以省略
final String a = 'ducafecat';
final a = 'ducafecat';
const String a = 'ducafecat';
const a = 'ducafecat';
初始后不能再赋值
final a = 'ducafecat';
a = 'abc'; err
const a = 'ducafecat';
a = 'abc'; err
不能和 var 同时使用
final var a = 'ducafecat'; err
const var a = 'ducafecat'; err
2.2 不同点 const 需要确定的值
final dt = DateTime.now();
const dt = const DateTime.now(); err
不可变性可传递
final List ls = [11, 22, 33];
ls[1] = 44;
const List ls = [11, 22, 33];
ls[1] = 44; err
内存中重复创建
final a1 = [11 , 22];
final a2 = [11 , 22];
print(identical(a1, a2)); false
const a1 = [11 , 22];
const a2 = [11 , 22];
print(identical(a1, a2)); true
identical通过比较两个引用的是否是同一个对象判断是否相等
2.3 使用场景 final 成员变量初始
final定义成员变量,指的是让变量在构造函数的
// 本地存储key
static const storageFirstOpen = 'first_open';
static const storageLanguageCode = 'language_code';
static const storageThemeCode = 'theme_code';
static const storageToken = 'token';
static const storageProfile = 'profile';
时候都一次性初始化,好处就是就不会遗漏成员变量
const 全局参数
class PlaceholdWidget extends StatelessWidget {
final String? assetImagePath;
const PlaceholdWidget({
Key? key,
this.assetImagePath,
}) : super(key: key);
@override
Widget build(BuildContext context) {
...
}
}
3. 数值类型 3.1 数值类型 int
整数值,其取值通常位于 -253 和 253 之间。
double
64-bit (双精度) 浮点数,符合 IEEE 754 标准。
num
int 和 double 都是 num 的子类。
3.2 十进制、十六进制
3.3 科学计数法
num a = 2e3;
print([a]);
[2000]
3.4 数值转换
3.5 位运算 & | ^
这些和c是一样的
4.布尔 4.1 bool
为了代表布尔值,Dart 有一个名字为 bool 的类型。 只有两个对象是布尔类型的:true 和 false 所创建的对象, 这两个对象也都是编译时常量。
bool a; print(a);
只有 true 对象才被认为是 true。 所有其他的值都是 flase(null也是)。
4.2 关于assert
注意: 断言只在检查模式下运行有效,如果在生产模式 运行,则断言不会执行。
4.3 逻辑运算符和关系运算符
&& || ! 和 != == ...都和c一样的
5. 字符串 5.01单引号或者双引号
赋值
String a = 'ducafecat';
String b = "ducafecat";
区别 转义分隔符
final myString = 'Bob's dog'; // Bob's dog
final myString = "a "quoted" word"; // a "quoted" word
final myString = "Bob's dog"; // Bob's dog
final myString = 'a "quoted" word'; // a "quoted" word
final value = '"quoted"'; // "quoted"
final myString = "a $value word"; // a "quoted" word
区别就是没啥区别....
5.02字符串模板
当需要插入一个简单的变量时,可以直接在字符串中使用$符号加上变量名。如果插入的是一个更复杂的表达式,则需要使用${}包裹表达式。
var a = 123;
String b = 'ducafecat : ${a}';
print(b);
5.03字符串连接
var a = 'hello' + ' ' + 'ducafecat';
var a = 'hello'' ''ducafecat';
var a = 'hello' ' ' 'ducafecat';
var a = 'hello'
' '
'ducafecat';
var a = '''
hello word
this is multi line
''';
var a = """
hello word
this is multi line
""";
print(a);
可以直接+,也可以+都不要,''' 和 """ 也非常好用
5.04 转义符号
var a = 'hello word n this is multi line';
print(a);
hello word
this is multi line
5.05取消转义
var a = r'hello word n this is multi line';
print(a);
hello word n this is multi line
就是在前面加了一个 r
5.06搜索
var a = 'web site ducafecat.tech';
print(a.contains('ducafecat'));
print(a.startsWith('web'));
print(a.endsWith('tech'));
print(a.indexOf('site'));
true
true
true
4
5.07提取数据
var a = 'web site ducafecat.tech';
print(a.substring(0,5));
var b = a.split(' ');
print(b.length);
print(b[0]);
web s
3
web
这里b[0]=web就可以发现,切分字符串返回的是一个数组
5.08大小写转换
var a = 'web site ducafecat.tech';
print(a.toLowerCase());
print(a.toUpperCase());
web site ducafecat.tech
WEB SITE DUCAFECAT.TECH
5.09裁剪 判断空字符串
print(' hello word '.trim());
print(''.isEmpty);
hello word
true
5.10替换部分字符
print('hello word word!'.replaceAll('word', 'ducafecat'));
hello ducafecat ducafecat!
5.11字符串创建
var sb = StringBuffer();
sb..write('hello word!')
..write('my')
..write(' ')
..writeAll(['web', 'site', 'https://ducafecat.tech']);
print(sb.toString());
hello word!my websitehttps://ducafecat.tech
文章来源:https://blog.csdn.net/weixin_62700590/article/details/139291283
微信扫描下方的二维码阅读本文
暂无评论内容