Flutter Tips之 - 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 ?? [];@overrideT operator [](int index) => index < _list.length ? _list[index] : absentValue;@overridevoid operator []=(int index, T value) => _list[index] = value;@overrideint get length => _list.length;@overrideT get first => _list.isNotEmpty ? _list.first : absentValue;@overrideT get last => _list.isNotEmptu ? _list.last : absentValue;@overrideset 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]);// Barprint(myList[1]);// Bazprint(myList[2]);// NOT_FOUNDmyList.length = 4;print(myList[3]);// ''myList.length = 0;print(myList.first);// NOT_FOUNDprint(myList.last);// NOT_FOUND
} 

有时胡乱思考的一个小tips,如有更好的建议欢迎留言共同进步。

最后

最近找到一个VUE的文档,它将VUE的各个知识点进行了总结,整理成了《Vue 开发必须知道的36个技巧》。内容比较详实,对各个知识点的讲解也十分到位。



有需要的小伙伴,可以点击下方卡片领取,无偿分享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值