欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SafeList?in?Flutter?and?Dart小技巧

 更新時間:2022年12月08日 15:23:11   作者:程序員界的小學(xué)生  
這篇文章主要為大家介紹了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 例子詳解

    這篇文章主要介紹了 Android Studio 3.0 原生支持kotlin 例子詳解,非常具有實用價值,需要的朋友可以參考下
    2017-05-05
  • Android 8.0安裝apk的實例代碼

    Android 8.0安裝apk的實例代碼

    本文給大家分享了Android 8.0安裝apk的實例代碼,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2018-03-03
  • Flutter軟鍵盤的原理淺析

    Flutter軟鍵盤的原理淺析

    大家應(yīng)該都知道目前Flutter官方是沒有自定義鍵盤的解決方案,下面這篇文章主要給大家介紹了關(guān)于Flutter軟鍵盤原理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-10-10
  • Android studio報: java.lang.ExceptionInInitializerError 錯誤

    Android studio報: java.lang.ExceptionInInitializerError 錯誤

    本篇文章主要介紹了Android studio報: java.lang.ExceptionInInitializerError錯誤的解決方法,具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • Android繪制炫酷引導(dǎo)界面

    Android繪制炫酷引導(dǎo)界面

    這篇文章主要幫助大家使用Android繪制炫酷引導(dǎo)界面,具有實用性和參考價值,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Android入門之Fragment嵌套Fragment的用法詳解

    Android入門之Fragment嵌套Fragment的用法詳解

    這篇文章主要為大家詳細(xì)介紹了Android中如何實現(xiàn)Fragment嵌套Fragment的相關(guān)資料,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,需要的可以參考一下
    2023-02-02
  • Kotlin協(xié)程上下文與上下文元素深入理解

    Kotlin協(xié)程上下文與上下文元素深入理解

    協(xié)程上下文是一個有索引的Element實例集合,每個element在這個集合里有一個唯一的key;協(xié)程上下文包含用戶定義的一些數(shù)據(jù)集合,這些數(shù)據(jù)與協(xié)程密切相關(guān);協(xié)程上下文用于控制線程行為、協(xié)程的生命周期、異常以及調(diào)試
    2022-08-08
  • Android中Activity的四種啟動模式和onNewIntent()

    Android中Activity的四種啟動模式和onNewIntent()

    android 中activity的啟動模式分為四種,(standard、singleTop、singTask、singleInstance),本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-08-08
  • Android Studio常用快捷鍵功能說明

    Android Studio常用快捷鍵功能說明

    本文給大家收藏整理了關(guān)于Android Studio常用快捷鍵功能說明,需要的朋友可以參考下
    2017-10-10
  • Android串口通信封裝之OkUSB的示例代碼

    Android串口通信封裝之OkUSB的示例代碼

    本篇文章主要介紹了Android串口通信封裝之OkUSB的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10

最新評論