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开发VR实战之播放360度全景视频

    Android开发VR实战之播放360度全景视频

    这篇文章主要为大家详细介绍了Android开发VR实战之播放360度全景视频,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • Android中播放在线音乐代码

    Android中播放在线音乐代码

    这篇文章主要介绍了Android中播放在线音乐代码,本文只给出了核心操作代码,需要的朋友可以参考下
    2015-04-04
  • FFmpeg Principle分析Out put File 数据结构

    FFmpeg Principle分析Out put File 数据结构

    这篇文章主要为大家介绍了FFmpeg Principle分析Out put File 数据结构,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • Android源码使用16进制进行状态管理的方法

    Android源码使用16进制进行状态管理的方法

    这篇文章主要介绍了Android源码使用16进制进行状态管理的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07
  • Android 中Notification弹出通知实现代码

    Android 中Notification弹出通知实现代码

    NotificationManager 是状态栏通知的管理类,负责发通知、清除通知等操作。接下来通过本文给大家介绍Android 中Notification弹出通知实现代码,需要的的朋友参考下吧
    2017-08-08
  • 打造酷炫的AndroidStudio插件

    打造酷炫的AndroidStudio插件

    这篇文章主要为大家详细介绍了如何打造酷炫的AndroidStudio插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • Android Studio 3.6 调试 smali的全过程

    Android Studio 3.6 调试 smali的全过程

    这篇文章主要介绍了Android Studio 3.6 调试 smali, 目前最新版的 Android Studio 利用附加功能调试 smali 非常方便,具体操作步骤跟随小编一起看看吧
    2020-02-02
  • Android中如何获取视频文件的截图、缩略图

    Android中如何获取视频文件的截图、缩略图

    这篇文章主要介绍了Android中如何获取视频文件的截图、缩略图的相关资料,需要的朋友可以参考下
    2016-03-03
  • android利用剪切板传递数据

    android利用剪切板传递数据

    这篇文章主要为大家详细介绍了android利用剪切板传递数据,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • Android多媒体教程之播放视频的四种方法

    Android多媒体教程之播放视频的四种方法

    这篇文章主要给大家介绍了关于Android多媒体教程之播放视频的四种方法,分别是通过intent的方式,调用系统自带的播放器、使用VideoView、MediaPlayer + SurfaceView及MediaPlayer + TextureView等方法,需要的朋友们可以参考学习。
    2017-06-06

最新评论