Flutter基础 — Dart 语言 — 基础类型

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



微信扫描下方的二维码阅读本文

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容