SafeList in Flutter and Dart小技巧
更新时间:2022年12月08日 15:23:11 作者:程序员界的小学生
这篇文章主要为大家介绍了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 Studio 3.0 原生支持kotlin 例子详解
这篇文章主要介绍了 Android Studio 3.0 原生支持kotlin 例子详解,非常具有实用价值,需要的朋友可以参考下2017-05-05Android studio报: java.lang.ExceptionInInitializerError 错误
本篇文章主要介绍了Android studio报: java.lang.ExceptionInInitializerError错误的解决方法,具有很好的参考价值。下面跟着小编一起来看下吧2017-03-03Android入门之Fragment嵌套Fragment的用法详解
这篇文章主要为大家详细介绍了Android中如何实现Fragment嵌套Fragment的相关资料,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下2023-02-02Android中Activity的四种启动模式和onNewIntent()
android 中activity的启动模式分为四种,(standard、singleTop、singTask、singleInstance),本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧2018-08-08
最新评论