SwiftUI超多picker的
總共有五種default, menu, segmented, wheel, inline
然後我在試的時候就超疑惑
你default跟menu長一樣就算了
你wheel跟inline也一模模一樣樣是哪招?(現在年輕人會這樣講話嗎?)
本來我還想說是SwiftUI版本的差異
結果後來知道是被List包住的話會長得不一樣
這也太雷了吧...到底誰會想得到...
接著談一下在SwiftUI很多的View在init時都會要求給一個Binding
這是原生直接幫我們做好可以管理subView狀態
只要在state變數的前面加個$傳進去
自然就會根據變化去更新了,很方便
印象中Flutter好像比較少看到原生Widget提供這樣的方式⚠️⚠️⚠️
開發者要去處理:要嘛就是在父層管理去管理子層,要嘛就是子層自己管理自己
最後談一下在SwiftUI似乎沒有提供多輪的Picker
所以我試了一下用兩個Picker實現
有兩個重點
要.compositingGroup()
而且要.clipped()
這兩個Picker才不會重疊
然後就是根據第一個Picker的state決定要顯示第2之1個Picker還是第2之2個
最後的最後補充一下ForEach
ForEach不是流程控制(但也不是View)
就是一種可以幫你重複生出View的語法
滿方便的~搭配ViewBuilder很常見
如果是Flutter要做的話可以用List.generate來生Widget☘️☘️☘️
Android | iOS | Flutter(Material) | Flutter(Cupertino) | SwiftUI |
---|---|---|---|---|
Spinner | UIPickerView | showBottomSheet | CupertinoActionSheet | Picker |
Android版:iOS Developer Learning Android. Lesson 13 - Spinner + DatePickerDialog (UIPickerView的代替品:下拉選單)
Flutter版:iOS Developer Learning Flutter. Lesson9 選擇器
https://github.com/mark33699/FDLS