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