SafeList?in?Flutter?and?Dart小技巧
正文
最近遇到一些列表的錯誤,例如,列表為空時直接調(diào)用方法會報錯。
一般都會在使用前判斷列表是否為空,再使用。
雖然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小技巧的詳細(xì)內(nèi)容,更多關(guān)于SafeList Flutter Dart的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
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的用法詳解
這篇文章主要為大家詳細(xì)介紹了Android中如何實現(xiàn)Fragment嵌套Fragment的相關(guān)資料,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,需要的可以參考一下2023-02-02Android中Activity的四種啟動模式和onNewIntent()
android 中activity的啟動模式分為四種,(standard、singleTop、singTask、singleInstance),本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友參考下吧2018-08-08