Flutter基础语法(一)数组
创始人
2024-05-12 12:54:39
0

Flutter基础

第一章 Flutter数组的使用


文章目录

  • Flutter基础
  • 前言
  • 一、数组是什么?
  • 二、数组的定义
    • 1.直接赋值
    • 2.字符串类型
    • 3.数据模型
    • 3.定义固定长度数组
  • 三、数组的常用属性
    • 1.数组长度
    • 2.数组翻转
    • 3.是否为空
    • 4.是否不为空
    • 5.获取第一个元素
    • 6.获取最后一个元素
  • 四、数组的增加方法
    • 1.增加元素
    • 2.拼接数组
    • 3.插入元素
    • 4.插入数组
  • 五、数组的删除方法
    • 1.删除元素
    • 2.通过下标删除元素
    • 3.删除最后一位元素
    • 4.范围删除,传入区间下标
    • 5.删除符合函数返回值为true的元素
    • 6.删除所有元素
  • 六、数组的修改替换
    • 1.修改区间为指定数组的值
    • 2.修改指定索引后的值
    • 3.将指定区间替换成指定值
    • 4.将区间值替换为数组内的值
    • 5.其他类型转换成List
    • 6.数组转换为字符串
  • 七、数组的查找
    • 1.传入具体值 返回值为索引
    • 2.传入具体值 返回值为索引-倒序
    • 3.查找区间的值,返回数组
    • 4.查找区间的值,返回迭代器
    • 5.判断数组是否有符合条件的值,返回布尔值
    • 6.查找数组是否包含值,返回布尔值
    • 7.获取满足条件的第一个元素
    • 8.获取满足条件的最后一个元素
    • 9.从指定位置开始,获取满足条件的第一个元素索引
    • 10.从指定位置开始,获取满足条件的最后一个元素索引
    • 11.查找是否存在满足条件的唯一值,存在返回这个元素,不存在执行第二个函数
  • 八、数组的去重
  • 九、数组的遍历
    • 1.map遍历
    • 2.for遍历
    • 3.forin遍历
  • 九、数组的累加器
    • 1.reduce
  • 十、排序
    • 1.sort
  • 总结


前言

在使用flutter开发已经有一段时间了,在之前都是快速开发,没有时间去复盘自己的知识体系,现在就从flutter的基本语法开始,一步步分析flutter涉及到的细节问题,希望对你有所帮助。


提示:以下是本篇文章正文内容,下面案例可供参考

一、数组是什么?

  • 数组(Array)是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式。这些有序排列的同类数据元素的集合称为数组。
  • 数组是用于储存多个相同类型数据的集合。

二、数组的定义

1.直接赋值

dart使用var关键字声明参数,会自动推断类型。

var array = [];
var array1 = [1,2,3];

2.字符串类型

var array = ['string'];
var array1 = ['123','456'];
List array3 = ['789'];

3.数据模型

class PersonModel {
int id;
PersonModel(this.id);
}
var array = [PersonModel(1)];var array1 = [PersonModel(2), PersonModel(3)];List array3 = [PersonModel(4)];

3.定义固定长度数组

var list = List.filled(5,' ');//  字符串数组[' ',' ',' ',' ',' ']
var list1 = List.filled(5, ''); // 字符串数组
var list2 = List.filled(5, '');// 混合类型固定长度数组
var list2 = List.filled(5, PersonModel(1));// 类型为PersonModel的数组

三、数组的常用属性

1.数组长度

var list = [1,2,3];
print("数组长度==${list.length}");//数组长度==3

2.数组翻转

var list = [1,2,3];
print("数组翻转==${list.reversed}");//数组翻转==(3, 2, 1)

3.是否为空

.isEmpty为空true 不为空false

var list = [1,2,3];
print("是否为空==${list.isEmpty}");//是否为空==falsevar list1 = [];
print("是否为空==${list1.isEmpty}");//是否为空==true

4.是否不为空

.isNotEmpty 为空false 不为空true

var list = [1,2,3];
print("是否不为空==${list.isNotEmpty}");//是否不为空==truevar list1 = [];
print("是否不为空==${list1.isNotEmpty}");//是否不为空==false

5.获取第一个元素

var list = [1,2,3];
print("获取第一个元素==${list.first}");//获取第一个元素==1

6.获取最后一个元素

var list = [1,2,3];
print("获取最后一个元素==${list.last}");//获取最后一个元素==3

四、数组的增加方法

1.增加元素

//void add(E value);
var list = [1, 2, 3];
list.add(4);
print("增加元素==${list}"); //增加元素==[1, 2, 3, 4]

2.拼接数组

//void addAll(Iterable iterable);
var list = [1, 2, 3];
list.addAll([4,5,6]);
print("拼接数组==${list}"); //拼接数组==[1, 2, 3, 4,5,6]

3.插入元素

//void insert(int index, E element);
//主页index下标不能大于数组长度加1,如下在下标为3是可以插入数据的,如果下标大于length+1就会报错
var list = [1, 2, 3];
list.insert(3, 4);
print("插入元素==${list}"); //插入元素==[1, 2, 3, 4]

4.插入数组

//void insertAll(int index, Iterable iterable);
var list = [1, 2, 3];
list.insertAll(3, [4,5]);
print("插入数组==${list}"); //插入数组==[1, 2, 3, 4, 5]

五、数组的删除方法

1.删除元素

//bool remove(Object? value);
var list = [1, 2, 3];
bool isSuccess = list.remove(3);
print("是否删除成功==${isSuccess}");//是否删除成功==true
print("删除元素==${list}"); //删除元素==[1, 2]

2.通过下标删除元素

//E removeAt(int index);
var list = [1, 2, 3];
int value = list.removeAt(2);
print("删除的元素是==${value}");
print("通过下标删除元素==${list}"); //通过下标删除元素==[1, 2]

3.删除最后一位元素

//E removeLast();
var list = [1, 2, 3];
int value = list.removeLast();
print("删除的元素是==${value}");
print("list==${list}"); //list==[1, 2]

4.范围删除,传入区间下标

//void removeRange(int start, int end);
var list = [1, 2, 3, 4, 5, 6];
list.removeRange(2, 4);
print("list==${list}"); //list==[1, 2, 5, 6]

5.删除符合函数返回值为true的元素

//void removeWhere(bool test(E element));
var list = [1, 2, 3, 4, 5, 6];
list.removeWhere((element) => element > 4);
print("list==${list}"); //list==[1, 2, 3, 4]

6.删除所有元素

//void clear();
var list = [1, 2, 3, 4, 5, 6];
list.clear();
print("list==${list}"); //list==[]

六、数组的修改替换

1.修改区间为指定数组的值

//void setRange(int start, int end, Iterable iterable, [int skipCount = 0]);
var list = [1, 2, 3, 4, 5, 6];
list.setRange(2, 5, [1, 1, 1, 1]);
print("list==${list}"); //list==[1, 2, 1, 1, 1, 6]
//为什么?替换下标是2<=x<5,更新的数组值也只去2,3,4下标的值,使用的时候需要注意!而且替换下标的数要小于替换数组,不然报错
//skipCount 默认为0,表示从第几位开始选取指定数组的值,使用概率较低

2.修改指定索引后的值

//void setAll(int index, Iterable iterable);
var list = [1, 2, 3, 4, 5, 6];
list.setAll(2, [1, 8, 1, 1]);
print("list==${list}"); //list==[1, 2, 1, 8, 1, 1]
//也要注意数组越界问题

3.将指定区间替换成指定值

//void fillRange(int start, int end, [E? fillValue]);
var list = [1, 2, 3, 4, 5, 6];
list.fillRange(2, 5, 8);
print("list==${list}"); //list==[1, 2, 8, 8, 8, 6]

4.将区间值替换为数组内的值

//void replaceRange(int start, int end, Iterable replacements);
var list = [1, 2, 3, 4, 5, 6];
list.replaceRange(2, 5, [8, 9]);
print("list==${list}"); //list==[1, 2, 8, 9, 6]

5.其他类型转换成List

把字典里key或value的值抽离出来变成数组

// List toList({bool growable = true}) {
//    return List.of(this, growable: growable);// }
final planets = {1: 'Mercury', 2: 'Venus', 3: 'Mars'};final keysList = planets.keys.toList(growable: false); // [1, 2, 3]final valuesList =planets.values.toList(growable: false); // [Mercury, Venus, Mars]

6.数组转换为字符串

var list = [1, 2, 3, 4, 5, 6];
var string = list.join('=');
print("string==${string}"); //string==1=2=3=4=5=6

七、数组的查找

1.传入具体值 返回值为索引

//int indexOf(E element, [int start = 0]);
//可以设置开始查找的位置下标
//不存在返回-1
var list = [1, 2, 3, 4, 5, 6];
var index = list.indexOf(5);
print("index==${index}"); //index==4

2.传入具体值 返回值为索引-倒序

//int lastIndexOf(E element, [int start = 0]);
//可以设置开始查找的位置下标
//不存在返回-1
var list = [1, 2, 3, 4, 5, 6];
var index = list.lastIndexOf(3);
print("index==${index}"); //index==2

3.查找区间的值,返回数组

//List sublist(int start, [int? end]);
var list = [1, 2, 3, 4, 5, 6];
var array = list.sublist(3, 4);
print("array==${array}"); //array==[4]

4.查找区间的值,返回迭代器

//Iterable getRange(int start, int end);
var list = [1, 2, 3, 4, 5, 6];
var array = list.getRange(3, 5);
print("array==${array}"); //array==(4, 5)

5.判断数组是否有符合条件的值,返回布尔值

//bool any(bool test(E element))
var list = [1, 2, 3, 4, 5, 6];
var bool = list.any((value) => value > 5);
print("bool==${bool}"); //bool==true

6.查找数组是否包含值,返回布尔值

//bool contains(Object? element)
var list = [1, 2, 3, 4, 5, 6];
var bool = list.contains(6);
print("bool==${bool}"); //bool==true

7.获取满足条件的第一个元素

//E firstWhere(bool test(E element), {E orElse()?})
var list = [1, 2, 3, 4, 5, 6];
var value = list.firstWhere((value) => value > 3);
print("value==${value}"); //value==4

8.获取满足条件的最后一个元素

//E lastWhere(bool test(E element), {E orElse()?})
var list = [1, 2, 3, 4, 5, 6];
var value = list.lastWhere((value) => value > 3);
print("value==${value}"); //value==6

9.从指定位置开始,获取满足条件的第一个元素索引

如果需要遍历数组,获取某个item的下标,就可以用这个方法了

//int indexWhere(bool test(E element), [int start = 0]);
var list = [1, 2, 3, 4, 5, 6];
var index = list.indexWhere((value) => value == 3);
print("index==${index}"); //index==2

10.从指定位置开始,获取满足条件的最后一个元素索引

//int lastIndexWhere(bool test(E element), [int? start]);
var list = [1, 2, 3, 4, 3, 6];
var index = list.lastIndexWhere((value) => value == 3);
print("index==${index}"); //index==4

11.查找是否存在满足条件的唯一值,存在返回这个元素,不存在执行第二个函数

//E singleWhere(bool test(E element), {E orElse()?}) 
var list = [1, 2, 3, 4, 3, 6];var value = list.singleWhere((element) => element > 7, orElse: () {print("不存在这个元素,返回1");return 1;});print("value==${value}"); //value==1}

八、数组的去重

会变成集合类型

var list = [1, 2, 3, 3, 4, 4, 5, 6];
var value = list.toSet();
print("value==${value}"); //value=={1, 2, 3, 4, 5, 6}

九、数组的遍历

1.map遍历

var list = [1, 2, 3, 3, 4, 4, 5, 6];
var value = list.map((e) => e > 3);
print("value==${value}"); //value==(false, false, false, false, true, true, true, true)

2.for遍历

var list = [1, 2, 3, 4];
for (var i = 0; i < list.length; i++) {print("value==${list[i]}");
}
// flutter: value==1
// flutter: value==2
// flutter: value==3
// flutter: value==4

3.forin遍历

var list = [1, 2, 3, 4];
for (var value in list) {print("value==$value");
}
// flutter: value==1
// flutter: value==2
// flutter: value==3
// flutter: value==4

九、数组的累加器

1.reduce

var list = [1, 2, 3, 4];
var value = list.reduce((value, element) => value + 1);
print('value==$value');

十、排序

1.sort

var list = [1, 2, 3, 4];
list.sort();
print('value==$list');

总结

例如:以上就是今天要讲的内容,本文仅仅简单介绍了数组的使用,而数组List提供了大量能使我们快速便捷地处理数据的函数和方法。希望文章对你有所帮助,后续继续完善。

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
ASM贪吃蛇游戏-解决错误的问... 要解决ASM贪吃蛇游戏中的错误问题,你可以按照以下步骤进行:首先,确定错误的具体表现和问题所在。在贪...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...