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提供了大量能使我们快速便捷地处理数据的函数和方法。希望文章对你有所帮助,后续继续完善。

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...