Flutter基础语法(一)数组

Flutter基础

第一章 Flutter数组的使用


文章目录


前言

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


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

一、数组是什么?

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

二、数组的定义

1.直接赋值

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

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

2.字符串类型

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

3.数据模型

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

3.定义固定长度数组

var list = List.filled(5,' ');//  字符串数组[' ',' ',' ',' ',' ']
var list1 = List<String>.filled(5, ''); // 字符串数组
var list2 = List<dynamic>.filled(5, '');// 混合类型固定长度数组
var list2 = List<PersonModel>.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}");//是否为空==false

var list1 = [];
print("是否为空==${list1.isEmpty}");//是否为空==true

4.是否不为空

.isNotEmpty 为空false 不为空true

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

var 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<E> 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<E> 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<E> 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<E> 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<E> 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<E> toList({bool growable = true}) {
//    return List<E>.of(this, growable: growable);
 // }
final planets = <int, String>{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<E> 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<E> 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提供了大量能使我们快速便捷地处理数据的函数和方法。希望文章对你有所帮助,后续继续完善。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明似水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值