Flutter基于Dart Unwrapping Multiple Optional小技巧
正文
接收到這樣一個(gè)需求,就是英文名字中firstName和lastName,其中任何一個(gè)為null,就返回Empty。
剛拿到需求,這不簡單,if判斷不就可以了
if (firstName == null || lastName == null) {
return 'Empty';
}
return '$firstName $lastName';
確實(shí),30秒搞定了。
withAll函數(shù)
自己想能不能再有更好一點(diǎn)的思路呢?可以更拓展一點(diǎn)的, 例如說三個(gè)字符串呢? 例如不是字符串,而是Object類型的呢?
于是就有了下面的代碼
提供一個(gè)withAll函數(shù),這個(gè)函數(shù)檢查整個(gè)列表的空值,如果發(fā)現(xiàn)任何空值,回調(diào)將不會被調(diào)用,如果列表沒有空值,回調(diào)將調(diào)用整個(gè)列表轉(zhuǎn)換為非可選項(xiàng)列表T
T? withAll<T>(
List<T?> optionals,
T Function<List<T>> callback,
) => optionals.any((e) => e == null)
? null
: callback(optionals.cast<T>());
然后添加一個(gè)方法,調(diào)用withAll函數(shù),為他提供可選值列表,只有當(dāng)列表不包含任何空值的時(shí)候才會調(diào)用回調(diào)
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。
今天增加了一個(gè)讓別人看不懂代碼的小思考。
以上就是Flutter基于Dart Unwrapping Multiple Optional小技巧的詳細(xì)內(nèi)容,更多關(guān)于Flutter Dart Multiple Optional的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android Jetpack組件庫LiveData源碼深入探究
LiveData是Jetpack組件的一部分,更多的時(shí)候是搭配ViewModel來使用,相對于Observable,LiveData的最大優(yōu)勢是其具有生命感知的,換句話說,LiveData可以保證只有在組件( Activity、Fragment、Service)處于活動生命周期狀態(tài)的時(shí)候才會更新數(shù)據(jù)2022-09-09
Android 媒體庫數(shù)據(jù)更新方法總結(jié)
這篇文章主要介紹了Android 媒體庫數(shù)據(jù)更新方法總結(jié)的相關(guān)資料,需要的朋友可以參考下2017-04-04
RecyclerView進(jìn)階:使用ItemTouchHelper實(shí)現(xiàn)拖拽和側(cè)滑刪除效果
現(xiàn)在RecyclerView的應(yīng)用越來越廣泛了,本篇文章主要介紹了RecyclerView進(jìn)階:使用ItemTouchHelper實(shí)現(xiàn)拖拽和側(cè)滑刪除效果,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-02-02
Android自定義View實(shí)現(xiàn)五子棋小游戲
這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)五子棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11
Android開發(fā)之判斷有無虛擬按鍵(導(dǎo)航欄)的實(shí)例
下面小編就為大家分享一篇Android開發(fā)之判斷有無虛擬按鍵(導(dǎo)航欄)的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01
Android Activity的跳轉(zhuǎn)與傳值詳解
這篇文章主要介紹了Android Activity的跳轉(zhuǎn)與傳值詳解的相關(guān)資料,需要的朋友可以參考下2017-06-06

