Flutter基于Dart Unwrapping Multiple Optional小技巧

 更新时间:2022年12月08日 15:34:12   作者:程序员界的小学生  
这篇文章主要为大家介绍了Flutter Unwrapping Multiple Optional打开多个选项小技巧示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

正文

接收到这样一个需求,就是英文名字中firstName和lastName,其中任何一个为null,就返回Empty。

刚拿到需求,这不简单,if判断不就可以了

if (firstName == null || lastName == null) {
    return 'Empty';
} 
return '$firstName $lastName';

确实,30秒搞定了。

withAll函数

自己想能不能再有更好一点的思路呢?可以更拓展一点的, 例如说三个字符串呢? 例如不是字符串,而是Object类型的呢?

于是就有了下面的代码

提供一个withAll函数,这个函数检查整个列表的空值,如果发现任何空值,回调将不会被调用,如果列表没有空值,回调将调用整个列表转换为非可选项列表T

T? withAll<T>(
    List<T?> optionals,
    T Function<List<T>> callback,
) => optionals.any((e) => e == null)
        ? null
        : callback(optionals.cast<T>());

然后添加一个方法,调用withAll函数,为他提供可选值列表,只有当列表不包含任何空值的时候才会调用回调

String getFullName(
    String? firstName,
    String? lastName,
) => withAll([
        firstName,
        lastName,
    ], (names) => names.join(' ')) ?? 'Empty';

测试一下

void main(List<String> args) {
    print(getFullName(null, null));// Empty
    print(getFullName('John', null));// Empty
    print(getFullName(null, 'Deo'));// Empty 
    print(getFullName('John', 'Deo'));// John Deo
}

哈哈,这代码可拓展性一下子就上来了,而且特别像官方API。

今天增加了一个让别人看不懂代码的小思考。

以上就是Flutter基于Dart Unwrapping Multiple Optional小技巧的详细内容,更多关于Flutter Dart Multiple Optional的资料请关注脚本之家其它相关文章!

相关文章

  • 关于Android 6.0权限的动态适配详解

    关于Android 6.0权限的动态适配详解

    Android 6.0版本(Api 23)推出了很多新的特性, 大幅提升了用户体验, 同时也为程序员带来新的负担. 动态权限管理就是这样, 一方面让用户更加容易的控制自己的隐私, 一方面需要重新适配应用权限,本文介绍了关于Android 6.0权限动态适配的相关资料,需要的朋友可以参考下。
    2017-11-11
  • android自定义WaveView水波纹控件

    android自定义WaveView水波纹控件

    这篇文章主要为大家详细介绍了android自定义WaveView水波纹控件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • php 异步调用方法实现示例

    php 异步调用方法实现示例

    客户端与服务器端是通过HTTP协议进行连接通讯,客户端发起请求,服务器端接收到请求后执行处理,并返回处理结果
    2014-01-01
  • Android实现QQ手机管家悬浮小火箭效果

    Android实现QQ手机管家悬浮小火箭效果

    这篇文章主要介绍了Android实现QQ手机管家悬浮小火箭效果,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • Android入门之使用eclipse进行源码开发的方法

    Android入门之使用eclipse进行源码开发的方法

    这篇文章主要介绍了Android入门之使用eclipse进行源码开发的方法,较为详细的分析了使用eclipse进行Android源码开发的具体步骤与相关注意事项,需要的朋友可以参考下
    2016-02-02
  • Android项目仿UC浏览器和360手机卫士消息常驻栏(通知栏)

    Android项目仿UC浏览器和360手机卫士消息常驻栏(通知栏)

    本篇文章主要介绍了Android项目仿UC浏览器和360手机卫士消息常驻栏(通知栏),可以仿照360的通知栏,有兴趣的可以了解一下。
    2016-11-11
  • android判断点击位置是否在扇形区域内

    android判断点击位置是否在扇形区域内

    这篇文章主要为大家详细介绍了android判断点击位置是否在扇形区域内,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • Android指纹识别功能深入浅出分析到实战(6.0以下系统解决方案)

    Android指纹识别功能深入浅出分析到实战(6.0以下系统解决方案)

    指纹识别在现实应用中已经很多了,本篇文章主要介绍了Android指纹识别功能,具有一定的参考价值,有需要的可以了解一下。
    2016-11-11
  • Android通过单点触摸移动图片

    Android通过单点触摸移动图片

    这篇文章主要为大家详细介绍了Android通过单点触摸移动图片,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Android编程之控件状态配置文件实例

    Android编程之控件状态配置文件实例

    这篇文章主要介绍了Android编程之控件状态配置文件,以实例形式分析了Android控件状态配置文件对于选中、获得焦点、按下时的状态等相关设置技巧,需要的朋友可以参考下
    2016-01-01

最新评论