Flutter之List
void listDemo() {
// 1.list的创建
listCreate();
// 2.多种类型的输出
listPrint();
// 3.添加数据
listAddElement();
// 4.删除数据
listRemoveElement();
// 5.更改列表元素
changeTheListElements();
// 按顺序迭代列表
List<String> names = ["Alice", "Daphne", "Elizabeth", "Joanna"];
names.forEach((name){
print(name);
});
}
1.List创建及属性
void listCreate() {
// 固定长度的列表,一旦定义就无法改变长度
List<int> fixedLengthList = List(5);
fixedLengthList[0] = 66;
print(fixedLengthList);
print(fixedLengthList[0]);
// 可改变长度的列表,可以根据需要改变长度
List<int> growableList =[];
growableList.add(100);
growableList.length = 5;
growableList[4] = 100;
growableList[1] = 1;
print(growableList);
List growableListB = List(500);
print(growableListB.length);
List fa = [1,2,5];
// 不可变列表
List fb = List.unmodifiable(fa);
// fb[0] = 100;
// fb.removeLast();
print(fb);
// 可变列表
List fc = List.from(fa);
fc[0] = 100;
print(fc);
// 创建一个长度为4值为1的列表,为所有元素统一赋值
List fd = List<int>.filled(4, 1);
print(fd);
List e = [14,20,3,4];
// 用生成器给所有元素赋初始值
List fe = List<int>.generate(4, (int index){ // 也是可变数组
print(index);
return e[index];
});
// 相关属性
print(fe);
print(fe.first);
print(fe.last);
print(fe.hashCode);
print(fe.isEmpty);
print(fe.isNotEmpty);
print(fe.iterator); // 返回一个新的迭代器 不知道有啥用
print(fe.reversed);
print(fe.removeLast());
print(fe);
print(fe.runtimeType);
fe.length = 1;
print(fe.single); // 列表是否是只有一个元素,否则报错
}
2.返回多种类型的输出
void listPrint(){
List growableList = List.from([1,2,3,4,5]);
// 返回列表的字符串表示
String string = growableList.toString();
print(string);
// 返回列表的集合表示
print(growableList.toSet());
// 返回字符串的列表表示
print(growableList.toList());
// 用指定字符连接列表元素
print(growableList.join(','));
print('---------分割线---------');
// 各种查询输出方法
List<String> names = ['Abbey', 'Fallon', 'Xenia', 'Callie', 'Callie'];
// 列表中是否包含指定元素
print(names.contains('Fallon'));
// 返回列表中的第几个元素
print(names.elementAt(2));
print(names[2]);
// 返回列表中第一个匹配元素的下标
print(names.indexOf('Callie'));
// 返回列表中最后一个匹配元素的下标
print(names.lastIndexOf('Callie'));
List<String> colors = ['red', 'green', 'blue', 'orange', 'pink'];
// 返回从开始下标(包括)到结束下标(不包括)元素的列表
print(colors.sublist(1, 3));
// 返回从开始下标(包括)到最后一个元素的列表
print(colors.sublist(1));
}
3.添加元素
void listAddElement(){
List growableList = List();
// 增加一个元素到末尾
growableList.add(100);
// 增加一个元素到指定下标
int index = 0;
dynamic element = 20;
print(growableList.length);
growableList.insert(index, element);
print(growableList);
// 增加一个列表到列表末尾
List list = [20,3];
growableList.addAll(list);
print(growableList);
// 增加一个列表到指定位置
growableList.insertAll(index, list);
print(growableList);
}
4.删除元素
void listRemoveElement(){
List list = [1,2,3,4,3,4,5];
print(list);
// 删除列表中匹配的第一个元素
list.remove(3);
print(list);
// 移除列表中第几一个元素
list.removeAt(1);
print(list);
// 移除列表中最后一个元素
list.removeLast();
// 移除列表的所有元素
list.clear();
print(list);
List listA = [1,2,3,4,5];
// listA.replaceRange(start, end, replacement)
// 删除并替换开始下标(包括)至结束下标(不包括)内的元素
// /**Removes the objects in the range [start] inclusive to [end] exclusive and inserts the contents of [replacement] in its place.
// List<int> list = [1, 2, 3, 4, 5];
// list.replaceRange(1, 4, [6, 7]);
// list.join(', '); // '1, 6, 7, 5'
// The provide range, given by [start] and [end], must be valid. A range from [start] to [end] is valid if 0 <= start <= end <= len, where len is this list's length. The range starts at start and has length end - start. An empty range (with end == start) is valid.
// This method does not work on fixed-length lists, even when [replacement] has the same number of elements as the replaced range. In that case use [setRange] instead *//
listA.replaceRange(1, 4, [6,'a',8]);
print(listA);
List listB = [1,2,3,4,5];
// listA.replaceRange(start, end, replacement)
// 删除并替换开始下标(包括)至结束下标(不包括)内的元素
listB.removeRange(1, 4);
print(listB);// [1,5]
List<String> numberA = ['one','two','trhee','four'];
// 从此列表中删除满足的所有对象。
numberA.removeWhere((item){
return item.length == 3;
});
print(numberA);
}
5.对列表元素做一些改动
void changeTheListElements() {
List<String> listA = ['a', 'b', 'c','d'];
// 从第几个元素开始覆盖原列表
/**List.setAll(int index, Iterable<String> iterable) → void
* 此操作不会增加此长度。
* [index]必须是非负数且不大于[length]。
* [iterable]的元素数量不能超过[index]到[length]的元素。
* 如果iterable基于此列表,则其值可能会在/ setAll期间/更改 */
listA.setAll(1, ['bee', 'sea']);
print(listA);
List<int> listB = [1, 2, 3, 4, 5];
// 对列表进行随机排序
listB.shuffle();
print(listB);
// 对列表进行顺序排序
/**
* List.sort([(int, int) → int compare]) → void
* 根据[compare]函数指定的顺序对此列表进行排序。
* [compare]函数必须充当[Comparator]。
*
*/
List<String> numbers = ['two','three', 'four'];
// Sort from shortest to longest.
numbers.sort((a, b) => a.length.compareTo(b.length));
print(numbers); // [two, four, three]
// The default List implementations use [Comparable.compare] if [compare] is omitted.
List<int> nums = [13, 2, -11];
nums.sort();
print(nums); // [-11, 2, 13]
}
链接:https://www.jianshu.com/p/29828eceb2fd
Flutter之List的更多相关文章
- Flutter 初尝:从 Java 无缝过渡
准备阶段 下载 Flutter SDK 新建 Flutter 文件夹,克隆 Flutter SDK: git clone -b beta https://github.com/flutter/flut ...
- 编写第一个Flutter App(翻译)
博客搬迁至http://blog.wangjiegulu.com RSS订阅:http://blog.wangjiegulu.com/feed.xml 以下代码 Github 地址:https://g ...
- 【译】Java、Kotlin、RN、Flutter 开发出来的 App 大小,你了解过吗?
现在开发 App 的方式非常多,原生.ReactNative.Flutter 都是不错的选择.那你有没有关注过,使用不同的方式,编译生成的 Apk ,大小是否会有什么影响呢?本文就以一个最简单的 He ...
- 我花了 8 小时,"掌握"了一下 Flutter | Flutter 中文站上线
Hi,大家好,我是承香墨影! 距离 Google 在 2018 世界移动大会上发布 Flutter 的 Beta 版本,Flutter 是 Google 用以帮助开发者在 Android 和 iOS ...
- flutter初体验
flutter初体验 和flutter斗争了两个周末,基本弄清楚了这个玩意的布局和一些常用组件了. 在flutter里面,所有东西都是组件Widget.我们像拼接积木一样拼接Widget,拼接的关键词 ...
- Flutter 实现原理及在马蜂窝的跨平台开发实践
一直以来,跨平台开发都是困扰移动客户端开发的难题. 在马蜂窝旅游 App 很多业务场景里,我们尝试过一些主流的跨平台开发解决方案, 比如 WebView 和 React Native,来提升开发效率和 ...
- Flutter 即学即用系列博客——05 StatelessWidget vs StatefulWidget
前言 上一篇我们对 Flutter UI 有了一个基本的了解. 这一篇我们通过自定义 Widget 来了解下如何写一个 Widget? 然而 Widget 有两个,StatelessWidget 和 ...
- Flutter 异常处理之图片篇
背景 说到异常处理,你可能直接会认为不就是 try-catch 的事情,至于写一篇文章单独来说明吗? 如果你是这么想的,那么本篇说不定会给你惊喜哦~ 而且本篇聚焦在图片的异常处理. 场景 学以致用,有 ...
- Flutter 即学即用系列博客——07 RenderFlex overflowed 引发的思考
背景 在进行 Flutter UI 开发的时候,控制台报出了下面错误: flutter: ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY >╞════════ ...
- Flutter的初体验--初次配置的问题
首先参照官方文档进行搭建Mac下的环境 ,然后就会遇到以下问题: 1.在下载了Flutter 之后,执行Flutter doctor之后,报错: Could not resolve URL &qu ...
随机推荐
- 学JAVA第四天,JAVA获取年月日
先添加引用import java.util.Calendar; 然后编写代码: Calendar calendar = null;//声明 calendar= Calendar.getInstance ...
- 程序员50题(JS版本)(四)
程序16:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字.例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制 var s=0; var num ...
- 博弈论入门之nim游戏
更好的阅读体验点这里 nim游戏 nim游戏 有两个顶尖聪明的人在玩游戏,游戏规则是这样的: 有\(n\)堆石子,两个人可以从任意一堆石子中拿任意多个石子(不能不拿),没法拿的人失败.问谁会胜利 ni ...
- Python_实现json数据的jsonPath(精简版)定位及增删改操作
基于python实现json数据的jsonPath(精简版)定位及增删改操作 by:授客 QQ:1033553122 实践环境 win7 64 Python 3.4.0 代码 #-*- encod ...
- 微信小程序(二)登录授权实现
相对于上一节,这一节主要是动态获取数据,主要是对登陆信息的接收,以及页面获取授权按钮的相对相应(未授权时,显示,授权后不显示) 关键在于状态值的判断,以及对页面的不同响应(m-->v) wxml ...
- Android音乐播放器的设计与实现
目录 应用开发技术及开发平台介绍 应用需求分析 应用功能设计及其描述 应用UI展示 一.应用开发技术及平台介绍 ①开发技术: 本系统是采用面向对象的软件开发方法,基于Android studio开发平 ...
- dede 采集文章内容中图片不显示的问题
找到include文件下面的dedecollection.class.php 找到DownMedias这个方法,大概在870行 //下载标记里的图片和flash $okurl = $this-> ...
- python实例一
https://www.cnblogs.com/evablogs/p/6754839.html 有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析: 方法一:该 ...
- Asp.Net Core 实现服务的批量注册注入
- topjui中datagrid增删改查
1.掌握datagrid的创建方式在html中直接定义与在js中定义 可参考easyui的官方文档:http://www.jeasyui.net/plugins/183.html 2.实现代码如下:重 ...