flutter 自定义键盘_掘金 AMA:听闲鱼客户端架构师邬吉风聊 Flutter 和移动端开发那些事...
第二十一期 AMA 掘金團隊請來了閑魚客戶端架構師,《Fish-Redux》作者-- 鄔吉風做了為期三天的 Ask Me Anything (AMA) 活動(活動已結束)。我們在此精選了一些來自用戶的提問及鄔吉風的回答。
關于 鄔吉風
阿里花名吉豐, 《Fish-Redux》作者。現任閑魚客戶端架構師,負責研發效能 & 高可用相關工作。
社區小伙伴精選提問--技術相關
用 Flutter 的過程中遇到幾點問題?-@戀貓de小郭
沒找到普通意義上的文本行間距設置方式,基本上都是leadind和height等參數而不是兩行之間間隔大小。
在Refresh控件刷新過程中,除了等待Future之外,貌似沒有辦法直接打斷刷新狀態。
Flutter的熱更新方案除了閑魚提出的模板json外,對于ios還有其他可行方案嗎?
Flutter狀態管理fish redux和google的provide優劣?
flutter目前是沒有line-space的選項,但是我們可以通過換算得到相同的結果。
自定義Refresh控件的原理和native基本相同,是可以完全控制的。Future是一個對異步的封裝,在刷新過程中,使用Future是一種實現手段。
Flutter的熱更新方案除了閑魚提出的模板json外,建議是跟隨Google的官方方案。
provide方案目前已經不再建議使用,它的替代者是 scoped_model。
拋開場景直接做比較是不合理的,scoped_model和fish-redux,在各自的場景下有各自的優勢。
相對而言,fish-redux 更適合有一定復雜度的中大型的項目。它核心解決了狀態集中管理和組件分治管理的關系,所以一方面我們能享受到Redux集中管理的巨大好處,另一方面我們也能享受到組件化分治的能力。同時對移動應用中最常見的ListView場景對了做了上層抽象,得到最佳的性能和最佳的分治模型。
Dart會替代js嗎?─ @A小恐龍
Dart會替代js嗎?
我認為dart不會完全替代js,但是會作為一種對js的補充存在。同時dart語法上有非常多的對js的繼承,對js的同學在語法上算是友好的。
你們是如何解決TextField Widget 的光標高度問題的?-@掘金社區首席裝逼CTO
你們是如何解決TextField Widget 的光標高度問題的?flutter環境Flutter (Channel beta, v1.3.8, on Mac OS X 10.14.3 18D109, locale zh-Hans-CN) 左邊是咸魚,右邊是我做的
你截圖里的閑魚頁面是用的native的輸入法,不過我們目前已經在將它變成flutter的實現了(內部對flutter的patch)。
而你的右截圖是flutter的實現,其實是一個flutter的bug,它將空格符的高度作為光標的高度和所有textfield文本內容的高度,這導致了一系列的問題。
https://github.com/flutter/flutter/issues/24182 https://github.com/flutter/flutter/issues/23433
好消息是flutter團隊正在處理這個問題,相信不久后,這個問題將得到徹底解決。
對Provide狀態管理怎么看?可以直接在fish_redux里面用嗎?-@洺魚
對Provide狀態管理怎么看?可以直接在fish_redux里面用嗎
Provide狀態管理目前已經不再推薦了,它可以在fishredux內使用,但并不推薦這樣做。fishredux更加強調的是單一數據源驅動。當然如果有更加具體的case的話,歡迎去https://github.com/alibaba/fish-redux/issues 給我們issue。
widget嵌套太不方便閱讀了,有什么解決的辦法?-@caiweijian
widget嵌套太不方便閱讀了,有什么解決的辦法
可以通過IDE的重構能力,拆分成若干小的函數,一定程度上會讓可讀性提高。
非技術相關-- 技術觀點
如何讓我能夠在redux的世界里能夠殺出一條血路?-@正楷
你好,我也是redux愛好者,不過基于對redux的不滿重新寫了一個flux架構的實現:react-control-center, counter實例:https://stackblitz.com/edit/cc-counter,funny-counter:https://stackblitz.com/edit/funny-counter, cc-antd-pro: https://github.com/fantasticsoul/rcc-antd-pro, 我自己認為這樣的方式是最接近react的方式去管理react狀態,但是苦于redux生態已經做大做強,不知道你cc有何看法,或者建議,讓我能夠在redux的世界里能夠殺出一條血路。
redux愛好者和強烈的不滿似乎是個矛盾體。我簡單看了你給的鏈接,看上去是個不錯的設計。開源本身是成就你我,普惠眾人,沒有那么強的對立性,建議是擁抱redux社區,做出更好的作品。
關于移動端和大前端的未來?-@hanliuxin5
在目前大前端浪潮越刮越涌的情況下,原生開發的優勢和劣勢何在。
小公司如何更有效的開展大前端技術的布道。
對移動端開發未來的展望。
在當下,原生開發的優勢依然存在,但從軟件架構分層看,它更加適合往下層發展。而對于廣大的軟件開發者而言,日常最多的往往是上層的具體業務需求,受效率和成本的驅動,將越來越趨向統一的跨端解決方案。
大前端是一種解決方案,flutter也是,它們有各自適合的場景,在這個基礎上,我相信它們都會成為下一代的主流的跨平臺解決方案。
而在這個過程中,小公司反而是更加容易擁抱變化,成為這個技術領域的先驅。
關于 Flutter 的幾個問題 -@Vadaski
客戶端新手直接學習Flutter來入門可以嗎,對于新手來講學習Flutter難點有哪些呢,在了解Flutter之后如果想要進一步拓展,下一步的技術學習方向定哪些會比較好呢。現在Fish Redux的學習成本相對還比較高,未來有沒有計劃對這個進行優化呢,例如詳細教程等。
Flutter目前生態中有沒有硬傷的部分,前兩天在圖文混排上遇到了坑,文字自動填充圖片右邊和下面空間這樣的排版,暫時還沒有踩過去,閑魚有相關解決方案么。還有其他哪些不太好踩的坑需要注意呢。
目前看到有在用TensorFlow自動生成UI代碼,三端一體化,組件化,確實很有吸引力,您認為客戶端開發的理想狀態是什么。問題比較多,嘿嘿。? 期待吉豐老師答復。
Flutter,就上層應用開發而言,對于新同學是非常友好的一個框架。我建議在有實踐的場景學以致用,是比較有效的學習方式。選擇技術方向也是類似,只有在對的場景才有用。
Fish Redux 是通過大量實踐檢驗的項目,但在文檔方面僅僅是滿足最基礎的要求,后面我們會對文檔整理和細化,也非常歡迎更多的社區同學加入進來,一起讓它變得更好,讓它慢慢演進成一個有影響力的flutter應用框架。
從閑魚的實踐來看,flutter的問題已經很少了,目前在鍵盤、輸入法相關場景下,flutter比native稍差些。圖文混排可以自定義,一般是將圖片轉化為一個寬度為0字符,然后給它設置寬高。
Ui2code也是閑魚技術團隊在做的一個技術項目,我自己也曾參與其中, 我相信它是未來終端技術的一部分,并且在不遠的將來,就會變為一種通用的能力。
我是一名安卓研發,現在在考慮接下來學習rn還是flutter,能給個建議么?-@啃手指的大笨熊
現在閑魚ios版本也使用了flutter么?選用flutter而不是rn的考慮是什么?混合開發的情況下,為了部分頁面而引入flutter的sdk,導致安裝包大小變大,會不會得不償失?我是一名安卓研發,現在在考慮接下來學習rn還是flutter,能給個建議么?
是的,目前閑魚的Flutter是運行在兩個平臺上的。引入Flutter,在Android端大致增加了6M大小,并不是特別大,是可接受的范圍。
RN和Flutter之間的比較,應該有非常多的文章。以我淺見看,RN是一種中間妥協方案,它會被瀏覽器技術的進步而取代,而Flutter是更加面向未來的一種徹底的跨平臺渲染框架。
對使用flutter與其他語言混合開發比較感興趣(比如用flutter構建用戶界面,用rust/kotlin寫業務邏輯),能否講講?-@VitalyR
對使用flutter與其他語言混合開發比較感興趣(比如用flutter構建用戶界面,用rust/kotlin寫業務邏輯),能否講講?想這樣做是因為不太喜歡dart的語法,以及希望用rust可以提高性能。
選擇任何技術都有它對應的場景,拋開具體場景談技術是不合適的。
比如使用rust來編寫業務邏輯,它適合什么場景,解決了什么問題?
如果比較性能,dart 代碼AOT下會被編譯成機器碼,它的性能不可能會比rust低。
如果是語法問題的話,我建議是更加開發的姿態去接受新鮮技術的挑戰。
我自己過去對dart也會存在疑問,但是隨著深入使用,會漸漸喜歡上dart。它使用友好,產物小,性能高,同時擁有AOT和JIT,支持毫秒級的hot-reload等等特性,這樣你也能更加深入的理解為什么Google選擇dart作為flutter的開發語言,它幾乎就是最佳的終端語言選擇。
福利篇-閑魚招人
閑魚作為阿里巴巴在閑置流通領域的戰略產品,是業內第一的閑置交易社區。
閑魚技術團隊推行打破技術棧分工限制(Android/iOS/HTML5/Server 編程模型和語言的統一), 以及計算機視覺技術在移動終端上的前沿實踐工作。致力于利用先進技術推動業務發展。特別的是,我們在 Flutter 和 Tensorflow Lite 等新技術的研發及應用處于行業領先位置,加入我們,一起用技術讓生活變得更加美好!
閑魚團隊現面向各大高校誠招 客戶端/服務端Java/前端/測試 實習生,base杭州阿里巴巴西溪園區 特別的我們非常歡迎有算法經驗的工程同學加入我們的團隊,一起完成深度學習在UI識別、商品內容理解、視頻圖片分類和質量檢測等領域的應用落地,讓算法的價值普惠閑魚億級用戶。歡迎各位投遞簡歷,詳詢 tino.wjf@alibaba-inc.com
由于篇幅原因,本期只摘錄了部分問題,鄔吉風 也回答了很多其他的技術、非技術問題,歡迎去他的 AMA 下面交流技術喲,傳送門。
往期 AMA
掘金 AMA:騰訊 Omi 框架作者--dntzhang 聊前端開發、談學習路徑和技術進階
掘金 AMA:聽奇舞團團長--月影談論他對技術 & 個人成長看法
掘金 AMA:聽《React 狀態管理和同構實戰》作者--LucasHC 說 React 和前端那些事
2018 年掘金 AMA 年度總結:16 位技術大牛他們的技術事
總結
以上是生活随笔為你收集整理的flutter 自定义键盘_掘金 AMA:听闲鱼客户端架构师邬吉风聊 Flutter 和移动端开发那些事...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑中linux系统在哪里设置密码,li
- 下一篇: git commit提交代码时提示LF与