SafeList in Flutter and Dart小技巧
正文
最近遇到一些列表的错误,例如,列表为空时直接调用方法会报错。
一般都会在使用前判断列表是否为空,再使用。
虽然Flutter提供了Null safety,但是用的时候还是会忘记或者忽略,直接使用'!'来跳过非空判断。
封装一个SafeList
代码如下:
class SafeList<T> extends ListBase<T> { final List<T> _list; final T defaultValue; final T absentValue; SafeList({ required this.defaultValue, required this.abssentValue, List<T>? values, }) : _list = values ?? []; @override T operator [](int index) => index < _list.length ? _list[index] : absentValue; @override void operator []=(int index, T value) => _list[index] = value; @override int get length => _list.length; @override T get first => _list.isNotEmpty ? _list.first : absentValue; @override T get last => _list.isNotEmptu ? _list.last : absentValue; @override set length(int newValue) { if (newValue < _list.length) { _list.length = newValue; } else { _list.addAll(List.filled(newValue - _list.length, defaultValue)); } } }
测试一下
void main() { const notFound = 'NOT_FOUND'; const defaultString = ''; final MyList = SafeList( defaultValue: defaultString, absentValue: notFount, values: ['Bar', 'Baz'], ); print(myList[0]);// Bar print(myList[1]);// Baz print(myList[2]);// NOT_FOUND myList.length = 4; print(myList[3]);// '' myList.length = 0; print(myList.first);// NOT_FOUND print(myList.last);// NOT_FOUND }
有时胡乱思考的一个小tips,如有更好的建议欢迎留言共同进步。
以上就是SafeList in Flutter and Dart小技巧的详细内容,更多关于SafeList Flutter Dart的资料请关注脚本之家其它相关文章!
相关文章
Android、iOS和Windows Phone中的推送技术详解
这篇文章主要介绍了Android、iOS和Windows Phone中的推送技术详解,推送技术的实现通常会使用服务端向客户端推送消息的方式,也就是说客户端通过用户名、Key等ID注册到服务端后,在服务端就可以将消息向所有活动的客户端发送,需要的朋友可以参考下2015-01-01Android RecyclerView使用ListAdapter高效刷新数据的操作方法
这篇文章主要介绍了Android RecyclerView使用ListAdapter高效刷新数据,本次也是介绍了用另外一种方法来实现RecyclerView高效刷新数据的功能,需要的朋友可以参考下2022-10-10Activity透明/半透明效果的设置transparent(两种实现方法)
两种方法实现Activity透明/半透明效果的设置,代码思路很有调理,感兴趣的朋友可以参考下,希望本文可以帮助到你2013-02-02android 版本检测 Android程序的版本检测与更新实现介绍
做个网站的安卓客户端,用户安装到自己手机上,如果我出了新版本怎么办呢?要有版本更新功能,感兴趣的朋友可以了解下2013-01-01Android的ImageButton当显示Drawable图片时就不显示文字
Android提供的ImageButton当显示Drawable图片时就不会再显示文字了,下面与大家分享下3种解决方法,不会的朋友可以了解下哈2013-06-06
最新评论