【譯】Flutter 1.20 發(fā)布

原文鏈接:https://medium.com/flutter/announcing-flutter-1-20-2aaf68c89c75

谷歌對(duì) Flutter 的定位是提供一個(gè)便捷的工具包,從而在任何設(shè)備上得到出色的繪制體驗(yàn),所以對(duì)于每個(gè) release 版本亿胸,將會(huì)努力確保 Flutter 能快速虚吟,美觀,高效和開(kāi)放地支持每個(gè)平臺(tái),而在今天發(fā)布到 release 分支的 1.20 版本中,主要也是關(guān)于以上這四個(gè)方面的改進(jìn)。

快速這個(gè)類別中轮锥,從底層級(jí)別的渲染引擎到 Dart 語(yǔ)言本身,本次我們都實(shí)現(xiàn)了多項(xiàng)性能改進(jìn)浮禾。

為了使開(kāi)發(fā)者能夠構(gòu)建更加精美的 Flutter 應(yīng)用程序交胚,1.20 版本提供了多項(xiàng) UI 增強(qiáng)功能,包括期待已久的:

  • autofill 支持;
  • 對(duì) Widget 進(jìn)行分層以支持平移和縮放的新方式;
  • 新的鼠標(biāo)光標(biāo)支持;
  • 對(duì)舊版本的 Material Widget(例如時(shí)間和日期選擇器)盈电,以及 desktop 和 mobile 上 Flutter 應(yīng)用中 About box 的全新響應(yīng)式 license 頁(yè)面的更新蝴簇。

為了繼續(xù)提高 Flutter 的工作效率,我們對(duì) Visual Studio Code 的 Flutter 擴(kuò)展進(jìn)行了更新匆帚,該擴(kuò)展將 Dart DevTools 直接帶入的 IDE 中熬词,在移動(dòng)文件時(shí)會(huì)自動(dòng)更新了導(dǎo)入語(yǔ)句,并提供了一組新的元數(shù)據(jù)用于構(gòu)建自己的工具吸重。

由于 Flutter 的開(kāi)放性和出色的社區(qū)貢獻(xiàn)者互拾,本 stable 版包含來(lái)自全球 359 個(gè)貢獻(xiàn)者的 3,029 個(gè)合并 PR5,485 個(gè) closed issues,其中包括來(lái)自 Flutter 社區(qū)的 270 個(gè)貢獻(xiàn)者嚎幸。

實(shí)際上颜矿,這是 Flutter release 版本中包含的最多社區(qū)貢獻(xiàn),特別是向這些社區(qū)貢獻(xiàn)者表示感謝:

  • CareF 的 28個(gè) PR嫉晶;
  • AyushBherwani1998 的 26個(gè)PR(包括 10 個(gè) Flutter samples 作為他的 Google Summer of Code 項(xiàng)目的一部分)骑疆;
  • a14n 的 13個(gè)PR(其中許多用于為 Flutter 的 landing null safety)

如果沒(méi)有廣泛的社區(qū)貢獻(xiàn)者團(tuán)隊(duì)田篇,我們將無(wú)法持續(xù)發(fā)布 Flutter,所以非常感謝大家的支持箍铭!

Flutter 的每個(gè)新版本都會(huì)帶來(lái)了更多使用的動(dòng)力泊柬,實(shí)際上在 4月就有報(bào)道過(guò) Google Play 商店中的 Flutter 應(yīng)用程序數(shù)量已達(dá)到 50,000,每月峰值新應(yīng)用程序數(shù)量為 10,000诈火。

現(xiàn)在兽赁,僅三個(gè)月后,Google Play 中就已經(jīng)有超過(guò) 90,000 個(gè)Flutter應(yīng)用冷守,我們?cè)谟《瓤吹搅撕芏噙@種增長(zhǎng)刀崖,現(xiàn)在印度是 Flutter 開(kāi)發(fā)人員的第一大區(qū)域,在過(guò)去六個(gè)月中翻了一番拍摇,這與Google 在該地區(qū)增加的投資相吻合蒲跨。最后 Flutter 不能沒(méi)有 Dart ,因此很高興看到 IEEE 報(bào)告說(shuō) Dart 自去年以來(lái)已經(jīng)上升了 4 個(gè)排位授翻,在他們跟蹤的前 50 種語(yǔ)言中排名第 12。

Flutter 和 Dart 的性能改進(jìn)

在 Flutter 團(tuán)隊(duì)中孙咪,我們一直在尋找減少應(yīng)用程序大小和延遲的新方法堪唐。以上一個(gè)版本為示例,此版本修復(fù)了 icon font tree shaking 時(shí)的工具性能問(wèn)題翎蹈,并在構(gòu)建非 Web 應(yīng)用程序時(shí)font tree shaking 為默認(rèn)行為淮菠。

icon font tree shaking 會(huì)刪除未在應(yīng)用程序中使用的圖標(biāo),從而減小尺寸荤堪。將其用于Flutter Gallery 應(yīng)用程序時(shí)合陵,我們發(fā)現(xiàn)它使應(yīng)用程序大小減少了100kb。現(xiàn)在澄阳,在進(jìn)行 release 版本構(gòu)建時(shí)拥知,默認(rèn)情況下在移動(dòng)應(yīng)用程序中會(huì)出現(xiàn)這個(gè)行為,目前僅限 TrueType 字體碎赢,但在將來(lái)的版本中將取消該限制低剔。

我們?cè)诖税姹局羞M(jìn)行的另一項(xiàng)性能改進(jìn)是使用預(yù)熱階段來(lái)減少動(dòng)畫初始顯示中的鋸齒,可以在此動(dòng)畫中看到一個(gè)改進(jìn)的示例(降低到一半速度)肮塞。

不用和有SkSL預(yù)熱的動(dòng)畫

如果 Flutter 應(yīng)用程序在首次運(yùn)行期間出現(xiàn)了不穩(wěn)定的動(dòng)畫襟齿,則 Skia Shading Language 著色器將在應(yīng)用程序構(gòu)建過(guò)程中提供預(yù)編譯功能,從而可以使其速度提高 2 倍以上枕赵。如果想利用此高級(jí)功能猜欺,請(qǐng)參見(jiàn) flutter.dev 上的 SkSL 預(yù)熱頁(yè)面

最后拷窜,當(dāng)我們針對(duì) desktop 進(jìn)行優(yōu)化時(shí)开皿,我們將繼續(xù)完善對(duì)鼠標(biāo)的支持涧黄。在此版本中,我們重構(gòu)了鼠標(biāo)點(diǎn)擊測(cè)試系統(tǒng)副瀑,以提供由于性能問(wèn)題而被阻止的許多體系結(jié)構(gòu)優(yōu)勢(shì)弓熏,重構(gòu)使我們能夠在基于 Web 的微基準(zhǔn)測(cè)試中將性能提高多達(dá) 15 倍!這意味著開(kāi)發(fā)者將獲得更好糠睡,更一致挽鞠,更準(zhǔn)確的命中測(cè)試,而無(wú)需放棄性能:雙贏狈孔!

通過(guò)這種更好信认,更快,更強(qiáng)大的鼠標(biāo)命中測(cè)試均抽,我們?cè)黾恿藢?duì)鼠標(biāo)光標(biāo)的支持嫁赏,這是 desktop 最受歡迎的功能之一。默認(rèn)情況下油挥,幾個(gè)常用的小部件將顯示開(kāi)發(fā)者期望的光標(biāo)潦蝇,或者開(kāi)發(fā)者可以從受支持的光標(biāo)列表中指定另一個(gè)。


Android上現(xiàn)有小部件上的新鼠標(biāo)光標(biāo)

此版本的 Flutter 基于 2.9 版本的 Dart 構(gòu)建的深寥,它具有一個(gè)新的基于狀態(tài)的 two-pas UTF-8解碼器攘乒,該解碼器具有在 Dart VM 中優(yōu)化的解碼原語(yǔ),部分利用了 SIMD 指令惋鹅。UTF-8是迄今為止互聯(lián)網(wǎng)上使用最廣泛的字符編碼方法则酝,當(dāng)收到較大的網(wǎng)絡(luò)響應(yīng)時(shí),能夠快速對(duì)其進(jìn)行解碼至關(guān)重要闰集。在我們的UTF-8解碼基準(zhǔn)測(cè)試中沽讹,我們發(fā)現(xiàn),在低端ARM設(shè)備上武鲁,英語(yǔ)文本的全面改進(jìn)從近200%提高到中文文本的400%爽雄。

自動(dòng)填充移動(dòng)文本字段

一段時(shí)間以來(lái),最受用戶歡迎的功能之一是為 Flutter 程序中對(duì)文本自動(dòng)填充在 Android 和 iOS提供支持洞坑。使用 PR 52126盲链,我們很高興地說(shuō)等待已經(jīng)結(jié)束:不再要求用戶重新輸入,操作系統(tǒng)已為他們收集的數(shù)據(jù)迟杂。

自動(dòng)填充

另外你會(huì)很高興聽(tīng)到我們也已經(jīng)開(kāi)始為 Web 添加此功能刽沾。

一個(gè)用于常見(jiàn)交互模式的新控件

此版本引入了一個(gè)新的小部件 InteractiveViewer。該 InteractiveViewer 設(shè)計(jì)用于建設(shè)普通類型的交互性到應(yīng)用程序排拷,如: 平移侧漓,縮放和拖動(dòng)“N”下降甚至大小調(diào)整,其中類似這種簡(jiǎn)單的棋盤监氢。

image

要查看如何將集成 InteractiveViewer 到自己的應(yīng)用程序中布蔗,請(qǐng)查看API文檔藤违,你可以在 DartPad 中使用它。另外纵揍,如果你想了解的 InteractiveViewer 設(shè)計(jì)和開(kāi)發(fā)方法顿乒,則可以在YouTube 上看到 Chicago Flutter on YouTube.的演講。

如果你有興趣向 InteractiveViewer 啟用的 Flutter 應(yīng)用程序中添加新的交互泽谨,那么你可能也會(huì)很高興聽(tīng)到我們?cè)诖税姹局刑砑恿烁喙δ軄?lái)拖動(dòng)“n”璧榄。具體來(lái)說(shuō),如果你想準(zhǔn)確知道目標(biāo)控件上的放置發(fā)生在哪里(Draggable對(duì)象本身始終可以使用它)吧雹,現(xiàn)在可以使用 DragTarget onAcceptDetails 方法獲取該信息骨杂。

image

請(qǐng)查看此樣本以獲取詳細(xì)信息,并期待將來(lái)的發(fā)行版雄卷,該發(fā)行版還將在拖動(dòng)期間提供此信息搓蚪,以便DragTarget 可以在拖動(dòng)操作期間更輕松地提供視覺(jué)更新。

更新了 Material Slider丁鹉,RangeSlider妒潭,TimePicker 和 DatePicker

除了新的控件之外,此版本還包含許多更新的控件揣钦,包括 SliderRangeSlider杜耙。有關(guān)更多信息,請(qǐng)參見(jiàn) Slider 控件的新增功能拂盯。

image

image

DatePicker 已更新,包括新的緊湊型設(shè)計(jì)以及對(duì)日期范圍的支持记靡。

image

最后谈竿,TimePicker它具有全新的風(fēng)格。

image

如果您想使用它摸吠,這是一個(gè)使用 Flutter構(gòu)建的有趣的 Web 演示空凸。

Responsive Licenses page

此版本的另一個(gè)更新是可以從中獲得新的 esponsive licenses page: AboutDialog

image

來(lái)自社區(qū)貢獻(xiàn)者 TonicArtos 的 PR 57588 不僅進(jìn)行了更新寸痢,以符合 Material 準(zhǔn)則呀洲,使其看起來(lái)非常美觀,而且更易于瀏覽啼止,并設(shè)計(jì)為可在平板電腦和臺(tái)式機(jī)上以及在手機(jī)上正常使用道逗。謝謝 TonicArtos!由于每個(gè) Flutter 應(yīng)用程序都應(yīng)顯示其使用的軟件包的許可證献烦,因此使每個(gè) Flutter 應(yīng)用程序都變得更好了滓窍。

發(fā)布插件需要新的 pubspec.yaml 格式

當(dāng)然,F(xiàn)lutter不僅是控件巩那,它也是工具吏夯,此版本附帶太多更新此蜈,但是,這里有一些亮點(diǎn)噪生。

首先裆赵,是一項(xiàng)公共服務(wù)公告:如果您是 Flutter 插件的作者,那么 pubspec.yaml 發(fā)布插件將不再支持舊格式跺嗽。如果嘗試執(zhí)行 pub publish 時(shí)會(huì)收到以下錯(cuò)誤消息:

image

舊格式不支持指定插件支持的平臺(tái)战授,并且自 Flutter 1.12 起已棄用。現(xiàn)在抛蚁,發(fā)布新的或更新的插件需要新的 pubspec.yaml 格式陈醒。

對(duì)于插件客戶而言,這些工具仍然可以理解舊的 pubspec 格式瞧甩,在未來(lái)一段時(shí)間內(nèi) pub.dev上所有使用舊格式的現(xiàn)有插件將繼續(xù)與Flutter應(yīng)用程序配合使用钉跷。

在Visual Studio Code 中預(yù)覽嵌入式 Dart DevTools

此版本中最大的工具更新是 Visual Studio Code 擴(kuò)展,它提供了一項(xiàng)新功能的預(yù)覽肚逸,使得開(kāi)發(fā)者能夠?qū)?Dart DevTools 屏幕直接帶入編碼工作區(qū)爷辙。

image

使用新的 dart.previewEmbeddedDevTools 設(shè)置啟用此功能,上面的屏幕截圖顯示了直接嵌入到 Visual Studio Code 中的 Flutter Widget Inspector 朦促,啟用了此新設(shè)置膝晾,你可以使用狀態(tài)欄上 的Dart DevTools 菜單選擇嵌入的收藏頁(yè)面。

image

此菜單允許您選擇要顯示的頁(yè)面务冕。

image

該功能仍處于預(yù)覽狀態(tài)血当,因此,如果您有任何問(wèn)題禀忆,請(qǐng)告訴我們臊旭。(https://github.com/Dart-Code/Dart-Code/issues

網(wǎng)絡(luò)跟蹤更新

Dart DevTools 的最新版本隨附“網(wǎng)絡(luò)”頁(yè)面的更新版本,可啟用 Web 套接字分析箩退。

image

現(xiàn)在离熏,“Network” 頁(yè)面會(huì)將計(jì)時(shí)信息以及你的狀態(tài)和內(nèi)容類型等其他信息添加到應(yīng)用中的 network calls 中。對(duì)詳細(xì)信息UI進(jìn)行了其他改進(jìn)戴涝,以提供 websocket 或 http 請(qǐng)求中數(shù)據(jù)的概述滋戳。我們還為該頁(yè)面提供了更多計(jì)劃,包括 HTTP請(qǐng)求/響應(yīng)主體和監(jiān)視 gRPC 流量啥刻。

Updating import statements on file rename

Visual Studio Code 的另一個(gè)新功能是在重命名時(shí)更新導(dǎo)入奸鸯,當(dāng)文件被移動(dòng)或重命名時(shí),它會(huì)自動(dòng)更新導(dǎo)入語(yǔ)句可帽。

image

該功能目前僅適用于單個(gè)文件府喳,不適用于多個(gè)文件或文件夾,但即將推出該功能蘑拯。

Tooling metadata for every tool builder

還要提到的另一項(xiàng)更新是針對(duì)構(gòu)建 Flutter 工具的人員钝满,我們?cè)?GitHub 上創(chuàng)建了一個(gè)新項(xiàng)目兜粘,以捕獲和發(fā)布有關(guān) Flutter 框架本身的元數(shù)據(jù),它提供以下內(nèi)容的機(jī)器可讀數(shù)據(jù)文件:

這與我們自己用于 Android Studio / IntelliJ 和 VS Code 擴(kuò)展的元數(shù)據(jù)相同孔轴;我們認(rèn)為這在構(gòu)建自己的工具時(shí)可能會(huì)覺(jué)得有用。實(shí)際上碎捺,此元數(shù)據(jù)使 IntelliJ IDE 系列的功能可以顯示Flutter代碼中使用的顏色:

image

與此相關(guān)的是IntelliJ和Android Studio中的一項(xiàng)新功能路鹰,該功能顯示 Color.fromARGB()Color.fromRGBO()的色塊:

image

特別感謝 GitHub 上的 dratushnyy 為 IntelliJ 中的顏色預(yù)覽做出了貢獻(xiàn)!

Typesafe platform channels for platform interop

為了響應(yīng)用戶調(diào)查中插件作者的普遍需求收厨,最近我們一直在嘗試如何使 Flutter 與主機(jī)平臺(tái)之間的通信對(duì)于插件和 Add-to-App 更安全更輕松晋柱。為了滿足這一需求爷绘,我們創(chuàng)建了 Pigeon 這個(gè)命令行工具速兔,該工具使用 Dart 語(yǔ)法在平臺(tái)通道頂部生成類型安全的消息傳遞代碼,而無(wú)需添加其他運(yùn)行時(shí)依賴項(xiàng)漾抬。

使用Pigeon拧额,你可以在直接調(diào)用 Dart 方法的情況下調(diào)用 Java / Objective-C / Kotlin / Swift 類方法并傳遞非基本數(shù)據(jù)對(duì)象碑诉,而無(wú)需在平臺(tái)通道上手動(dòng)匹配方法字符串和序列化參數(shù)。

image

雖然仍然處于預(yù)發(fā)行階段侥锦,但是 Pigeon 已經(jīng)變得足夠成熟进栽,因此我們可以在 video_player 插件中使用它。如果您想對(duì) Pigeon 進(jìn)行測(cè)試以供自己使用恭垦,請(qǐng)參閱更新的平臺(tái)渠道文檔以及該示例項(xiàng)目快毛。

無(wú)法列出太多工具更新

Flutter 1.20 時(shí)間表中的工具發(fā)生了太多重大變化,因此我們無(wú)法在此處列出所有內(nèi)容番挺。但是祸泪,您可能希望自己查看更新公告:

重大變化

與以往一樣,我們?cè)噲D將重大更改的數(shù)量保持在較低水平建芙。以下是Flutter 1.20版本中的列表。

  • #55336 Adding tabSemanticsLabel to CupertinoLocalizations - 遷移指南PR
  • #55977 Add clipBehavior to widgets with clipRect
  • #55998 Fixes the navigator pages update crashes when there is still route.
  • #56582 Update Tab semantics in Cupertino to be the same as Material
  • #57065 Remove deprecated child parameter for NestedScrollView’s overlap managing slivers
  • #58392 iOS mid-drag activity indicator

Summary

希望你和我們一樣對(duì)這個(gè)版本感到興奮懂扼,從許多角度來(lái)看禁荸,這是 Flutter 迄今為止最大的發(fā)行版。隨著性能的提高阀湿,新的和更新的小部件以及工具的改進(jìn)赶熟,我們只能做到更突出。我們要感謝社區(qū)貢獻(xiàn)者的數(shù)量不斷增長(zhǎng)陷嘴,而且不斷壯大映砖,使每個(gè) Flutter 版本都可以比以前的版本更大,更快灾挨,更強(qiáng)大邑退。還有更多的功能竹宋,包括對(duì)空安全性的支持,新版本的 Ads地技,MapsWebView 插件蜈七,以及正在進(jìn)行的更多工具支持。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末莫矗,一起剝皮案震驚了整個(gè)濱河市飒硅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌作谚,老刑警劉巖三娩,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異妹懒,居然都是意外死亡雀监,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門彬伦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)滔悉,“玉大人,你說(shuō)我怎么就攤上這事单绑』毓伲” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵搂橙,是天一觀的道長(zhǎng)歉提。 經(jīng)常有香客問(wèn)我,道長(zhǎng)区转,這世上最難降的妖魔是什么苔巨? 我笑而不...
    開(kāi)封第一講書人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮废离,結(jié)果婚禮上侄泽,老公的妹妹穿的比我還像新娘。我一直安慰自己蜻韭,他們只是感情好悼尾,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著肖方,像睡著了一般闺魏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上俯画,一...
    開(kāi)封第一講書人閱讀 51,287評(píng)論 1 301
  • 那天析桥,我揣著相機(jī)與錄音,去河邊找鬼。 笑死泡仗,一個(gè)胖子當(dāng)著我的面吹牛埋虹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播沮焕,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼吨岭,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了峦树?” 一聲冷哼從身側(cè)響起辣辫,我...
    開(kāi)封第一講書人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎魁巩,沒(méi)想到半個(gè)月后急灭,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谷遂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年葬馋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肾扰。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡畴嘶,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出集晚,到底是詐尸還是另有隱情窗悯,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布偷拔,位于F島的核電站蒋院,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏莲绰。R本人自食惡果不足惜欺旧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蛤签。 院中可真熱鬧辞友,春花似錦、人聲如沸震肮。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)钙蒙。三九已至,卻和暖如春间驮,著一層夾襖步出監(jiān)牢的瞬間躬厌,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留扛施,地道東北人鸿捧。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像疙渣,于是被迫代替她去往敵國(guó)和親匙奴。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354