前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Dart 学习基础篇(数据类型&对应方法

Dart 学习基础篇(数据类型&对应方法

原创
作者头像
KID.
修改2024-01-17 10:24:28
1450
修改2024-01-17 10:24:28
举报

Flutter之前准备! dart语言学习

为了方便运行可以下载一个 CodeRunner 插件,可以右键点击运行

创建页面

使用 dart 语言,需要创建一个.dart结尾的文件。

代码语言:javascript
复制
// 入口是main ,运行main 中的代码

// 写代码一定要写分号

void main(List<String> args) {

? print('hellow new flutter');

}

打印

print

数据类型

定义变量 及常量

可以通过var 来定义变量,他会自动匹配变量的数据类型,也可以使用 对应的 String , int 来指定定义的类型。

使用 const 或者 final 来定义常量

const 与 final 的区别。

const 定义后需要赋值否则汇报从。final 可以先定义不赋值,可以在后面再赋值,有且只有一次赋值的机会 。final 也可是一个函数的返回结果的赋值。但是 const 不可以

代码语言:javascript
复制
void main(List<String> args) {

? print('hellow new flutter');

? String str1 = 'hellow';

? var num1 = 2; // 可以自动的进行类型推断

? const ENV\_POORT = 8000;

? print(num1);

? print(str1);

}

dart 数据类型

String 字符串

字符串定义可以使用 '单引号',"双引号",'''三引号可以换行!!!'''

dart 提供 $变量 的方式,再字符串中引入别的内容,不论是什么用什么定义的字符串

判断相等使用 == ,dart 中不存在===

代码语言:javascript
复制
void main(List<String> args) {

? String str1 = 'hellow';

? final envDomain;

? envDomain = 'net';

? String str2 = '''

? ? ? ? ? ? ? 这里是 三个引号 模板字符串可以使用模板字符串方式使用---

? ? ? ? ? ? ? ${envDomain} -- 模板里的内容

? ? ? ? ? ? ? ''';

? String str4 = '''

? ? 不加 大括号的变量

? ? $str2

? ? ''';

? print(str2 == str4);

? print(str2);

? print(str4);

}

number 数字

使用 int 来定义整形,使用 double 来定义浮点类型

代码语言:javascript
复制
void main(List<String> args) {

? print('hellow new flutter');

? int numb1 = 100;

? double numb2 = 200.5;

? print(numb1 + numb2);

? print(numb1);

}

Boolean 布尔类型

使用 bool 来定义布尔类型

代码语言:javascript
复制
void main(List<String> args) {

? ?bool bol = true;

? ?print(bol);

}

List 数组类型

使用 List 来定义数组,自然也可以使用 var

可以使用 <String>的方式来定义数组中的内容是那种类型,要求字符串中所有的内容都是 String 类型的

数组的方法

List.filled(length, '1')相当于创建了一个固定长度的数组,后面的内容可以不填写。 创建后不可以通过 add 增加来改变 List 长度,也不可以通过 length 赋值来改变 List 长度

arr.add() 向数组最后方新加入一个元素

代码语言:javascript
复制
void main(List<String> args) {

? ? List list = ['xiaotao', 23, false];

? ? List l2 = <String>['xiaotao', 'xiaoming', 'xiaoli'];

? ? // 也可以通过 <String>来规定数组里元素的数据类型

? ? List l3 = List<String>.filled(2, '1');

? ? l2.add('xiaohei');

? ? // l3.add(2); ?会报错,不可以再添加,不可以改变长度

? ? // l3.length = 0; 会报错。不可以改变长度

? ? l3[0] = 'hsu'; // 可以改变数组内容

? ? print(l2);

? ? print(l3);

? ? print(list);

}

Map 对象

Map 类型,可以通过 new Map()来进行对象的创建,也可以直接使用 var 来定义

定义对象名称需要用双引号包裹,读取和赋值的时候需要使用 obj'name' 的方式来获取,不可以使用 js . 的方式调用。

代码语言:javascript
复制
void main(List<String> args) {

? var obj = {"name": "xiaotao", "age": 23};

? print(obj);

? print(obj["name"]);

}

类型判断

代码语言:javascript
复制
void main(List<String> args) {

? List arr1 = [1, 23, 'sser'];

? String str = 'sedsk';

? double num = 12.5;

? print(arr1 is String);

? print(arr1 is List);

? print(str is String);

? print(num is int);

? print(num is double);

}

类型转换

代码语言:javascript
复制
void main(List<String> args) {

? // int.parse 只能转换整型,

? // 浮点型需要用double.parse来转换

? // 所以可以全部使用 double.parse 来转换

? String str = '121.5';

? // int num = int.parse(str); // 报错

? double num2 = double.parse(str);

? print(num2);

? // 可以使用 .toString()将数字类型转换为字符串

? String str1 = num2.toString();

? print(str1 == str);

}

算数运算符

代码语言:javascript
复制
void main(List<String> args) {

? int a = 5;

? int b = 2;

? print(a ~/ b);

}

循环语句

switch可以在每个 case 执行后不写 break ,dart 默认执行一条语句后就结束

其余的内容与 JS 相同

List & Map

List

List 属性

length 长度 rerversed 将 List 数据反转,返回的是一个可迭代的对象 // 可以通过 toList 将结果转换为数组 isEmpty 是否为空 isNotEmpty 是否非空

代码语言:javascript
复制
void main(List<String> args) {

? // List

? // List 属性 length 长度 ,

? List menu = ['zhangsan', 'lisi', 'wangwu'];

? print(menu.length);

? // reversed 将List数据反转,返回的是一个可迭代的对象

? // 可以通过toList 将结果转换为数组

? print(menu.reversed.toList());

? print(menu.isEmpty);

? print(menu.isNotEmpty);

}

List 方法

List.indexOf(value) 查找指定元素索引

添加

List.add() 向 List 中添加元素

List.addAll(['xx']) 向 List 添加多个元素,传入的内容是以一个数组。与 js concat 类似

List.insert(index,'value') 向索引为 index 的位置插入 value 元素

List.insertAll(index,['value1','value2']) 向索引为 index 的位置插入 'value1','value2'元素

List.join('-')String.split('-') 用法与 js 相同

代码语言:javascript
复制
void main(List<String> args) {

? ? List menu = ['zhangsan', 'lisi', 'wangwu'];

? ? menu.add('zhaoliu');

? ? // 类似拼接数组

? ? menu.addAll(['huqi', 'liuba']);

? ? // 在索引为2 的位置插入数据

? ? menu.insert(2, 'chenjiu');

? ? // 在数组后面追加数据

? ? menu.insertAll(menu.length, ['sunshi']);

? ? print(menu);

}
删除

List.remove() 删除指定元素

List.removeAt() 删除指定索引

代码语言:javascript
复制
void main(List<String> args) {

? ? List menu = ['zhangsan', 'lisi', 'wangwu'];

? ? menu.add('zhaoliu');

? ? menu.addAll(['huqi', 'liuba']);

? ? print(menu);

? ? // 删除 remove removeAt

? ? menu.remove('liuba');

? ? menu.removeAt(4);

? ? print(menu);

? ? // 结果 [zhangsan, lisi, wangwu, zhaoliu]

? ? // 可以先查找元素索引,再指定索引删除

? ? int rout = menu.indexOf('wangwu');

? ? print(rout);

}
数组循环遍历方法

List.foreach((element){})

List.map((element){})

map不会操作原数组,返回一个新的可迭代的对象,可以通过 toList 转换成数组

代码语言:javascript
复制
void main(List<String> args) {

? ? List menu = ['zhangsan', 'lisi', 'wangwu'];

? ? var newMenu = menu.map((element) {

? ? ? ? print(element);

? ? ? ? return element + 'map操作';

? ? });

? ? print(newMenu.toList());

}

List.where((element)=>false)

where 类似与 js 数组中的 filter,返回的也是可迭代的对象,不会操作原数组

代码语言:javascript
复制
void main(List<String> args) {

? ? List menu = ['zhangsan', 'lisi', 'wangwu'];

? ? var result = menu.where((element) => element.length > 7);

? ? print(result);

}

List.every((element)=>false)

every 遍历必须每一个元素都满足条件则返回 true,如果有一个不满足则返回 false

List.any((element)=>false)

any 遍历如果有一个元素满足条件则返回 true,如果都不满足则返回 false

对象里的属性名称一定要被双引号包起来

代码语言:javascript
复制
void main(List<String> args) {

? ? List table = [

? ? ? ? {"id": 1, "check": true},

? ? ? ? {"id": 2, "check": true},

? ? ? ? {"id": 3, "check": true},

? ? ? ? {"id": 3, "check": false},

? ? ];

? ? bool isAllCheck = table.every((element) => element["check"]);

? ? bool hasNoCheck = table.any((element) => !element["check"]);

? ? print(isAllCheck);

? ? print(hasNoCheck);

}

Set 类数组结构

与 JS 相同,都是不允许重复的结构,不可以 newSet()中直接传参

代码语言:javascript
复制
void main(List<String> args) {

? var set = new Set(); // 和JS 一样,不可以有重复

? set.add(111);

? set.add(222);

? set.add(111);

? print(set.toList());

? // 去重 传入数组不可以在new Set()中传参,需要new 一个空的,在调用addAll方法填入

? List arr = [1, 1, 2, 3, 4, 3, 2, 34, 5, 9, 5];

? set.addAll(arr);

? print(set);

}

Map

Map 属性

keys 获取所有的属性名称 values 获取所有的属性值 entries 将键值对放入数据中,可以通过遍历获取内容 isEmpty 是否为空 isNotEmpty 是否非空

代码语言:javascript
复制
void main(List<String> args) {

? // 创建Map类型的数据就是用Map 可以在后面根据数据的类型定义key和value的类型,

? // dynamic 是动态的意思

? Map<String, dynamic> obj = {"name": "zhangshan", "age": 1};

? var keys = obj.keys;

? var values = obj.values;

? var items = obj.entries;

? print(items);

? for (var element in items) {

? ? print(element.value); // 可以直接调用读取,不可以赋值

? }

}

Map 方法

Map['key'] = "value"; 增加一个的方法

Map.addAll({"key":"value"}) 添加多个方法

Map.addEntries([MapEntry("key", "value")]) 传入的是一个 MapEntry 的数组

Map.remove("key") 根据 key 值删除元素

Map.removeWhere((key, value) => value == 'lisi') 根据条件判断删除

Map.containsKey("key") 判断是否包含某个属性

Map.containsValue("value") 判断是否包含某个值

Map.forEach((key, value){}) map 支持 foreach

Map.map((key, value){}) Map 支持 map,返回值需要时 MapEntry,不改变原对象,会生成新的对象

代码语言:javascript
复制
void main(List<String> args) {

? // 创建Map类型的数据就是用Map 可以在后面根据数据的类型定义key和value的类型,

? // dynamic 是动态的意思

? Map<String, dynamic> obj = {"name": "zhangshan", "age": 1};

? // 直接赋值

? obj['addr'] = "chengdu";

? // 添加多个

? obj.addAll({"home": "jilin", "id": 'x12289021'});

? // 通过addEntries 添加

? obj.addEntries([MapEntry("mom", "lisi"), MapEntry("father", "wangwu")]);

? // 删除

? obj.remove("father");

? obj.removeWhere((key, value) => value == 'lisi');

? print(obj.containsKey('name'));

? print(obj.containsValue('name'));

? print(obj);

? // foreach

? obj.forEach((key, value) {

? ? print(key);

? });

? // map

? Map obj2 = obj.map((key, value) {

? ? print('$key is $value');

? ? return MapEntry(key, '$key is $value');

? });

? print(obj2)

}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Flutter之前准备! dart语言学习
    • 创建页面
      • 打印
        • 数据类型
          • 定义变量 及常量
        • dart 数据类型
          • number 数字
          • Boolean 布尔类型
          • List 数组类型
          • Map 对象
          • 类型判断
          • 类型转换
          • 算数运算符
        • 循环语句
        • List & Map
          • List
            • List 属性
            • List 方法
          • Set 类数组结构
            • Map
              • Map 属性
              • Map 方法
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
          http://www.vxiaotou.com