0%

【文章內容使用 Gemini 1.5 Pro 自動產生】

基於 Mindy Hoover 和 Chris Bracken 於 2022 年進行的 Flutter 桌面使用者研究的見解和優先事項

2 月,Flutter 正式發佈了針對 Windows 應用程式的 [開發支援](https://medium.com/flutter/announcing-flutter-for-windows-6979d0d01fed),將其跨平台功能擴展到桌面。隨著 [Flutter 3](https://medium.com/flutter/introducing-flutter-3-5eb69151622f) 於 2022 年 5 月發佈,Flutter 宣布對 macOS 和 Linux 提供穩定支援,完成了桌面支援的三部曲!現在 Flutter 使用者已經有幾個月的時間可以嘗試這些新功能了,我們想知道:Flutter 如何才能更好地支援桌面開發人員?

為了回答這個問題,我們在 Q3 Flutter 調查中收集了來自 1,901 位 Flutter 桌面開發人員的數據。如果您在 8 月份參加了 Flutter Vikings,您可能會看到 UX 研究人員在焦點小組討論中與開發人員交談。以下是我們發現的內容,以及我們將如何利用這些內容來改進 Flutter。

您對 Flutter 在桌面上的滿意度如何?

平均而言,在 Windows、macOS 和 Linux 上,78% 的 Flutter 桌面開發人員表示他們對其開發體驗 *非常* 或 *相當滿意*。這個評分與 iOS 的滿意度(78%)持平,介於 Android(92%)和網頁(63%)之間。對於 Flutter 桌面來說,這是一個好消息!但它也引發了一個問題,對於其他 22% 的使用者,體驗在哪裡不足?

Bar chart of developer satisfaction with Flutter’s support of each target platform.
Satisfaction by target platform

桌面開發人員工作流程中最具挑戰的部分是什麼?

接下來,我們要求開發人員評估他們在軟體開發工作流程各階段的滿意度。結果顯示,滿意度在桌面應用程式開發流程中往往會下降。這導致使用者在 *除錯效能問題* 和 *部署應用程式* 時的滿意度最低。此外,根據調查和焦點小組的定性回饋,尋找適用於桌面的 Flutter 套件很具有挑戰性。

Line chart showing satisfaction on the y-axis and development stage on the x-axis. Satisfaction is high at the beginning when developers are seting up the environment, falls a bit when searching for documentation, and rises again when running and refreshing the app. Satisfaction steadily falls starting with debugging syntax and UI. Finally, it ends with the lowest satisfaction around debugging performance issues and deploying the app.
Flutter for desktop satisfaction by development workflow stage

Flutter 生態系統需要更多支援桌面的套件才能更好地支援桌面。(本文稍後列出了最受需求的套件。)我們正在努力開發新的支援桌面的 API(更多資訊請見下文),但我們無法做到所有事情。我們希望社群也能站出來提供幫助,透過建立新的套件和使用 [聯合外掛](https://docs.flutter.dev/development/packages-and-plugins/developing-packages#federated-plugins) 為現有套件添加桌面支援,例如。

我們知道排除效能問題不是一件有趣的事,但至少應該是一種令人滿意的體驗。我們的團隊正在努力改進 Flutter DevTools 的功能,特別是記憶體分析功能,以使排除效能問題變得更容易。例如,您現在可以使用 Flutter 的 DevTools 來 [比較記憶體快照](https://docs.flutter.dev/development/tools/devtools/release-notes/release-notes-2.20.0)!此外,請查看完全重寫的 [記憶體檢視頁面](https://docs.flutter.dev/development/tools/devtools/memory)。

Flutter 桌面開發人員告訴我們,部署桌面應用程式需要太多步驟。桌面團隊將對桌面應用程式部署進行任務分析,以確定我們可以在哪些地方改進應用程式部署流程和文件。

哪些內容可以幫助您製作更好的桌面使用者介面?

72% 的使用者同意「Flutter 的內建 Widget 可以建立適合桌面的 UI」。當我們詢問開發人員哪些內容可以幫助他們改進桌面應用程式的 UI 設計時,他們壓倒性地回答他們需要更好的支援:

  1. 自適應佈局(44%)
  2. 拖放(31%)
  3. 鍵盤快捷鍵(27%)
A horizontal bar chart of design feature requests for improving Flutter desktop apps. Adaptive layouts were most requested, followed by drag and drop, and keyboard shortcuts.
Which of the following could be improved to help you reach your design goals when using flutter to develop desktop apps?

我們努力讓 Flutter 成為最好的 *跨平台* 應用程式開發框架,因此這一直都是我們的首要任務。但是,改進「*自適應佈局*」是一個模糊的問題空間,會影響到每個目標平台,而不仅仅是桌面。此外,還存在許多因素,包括螢幕大小、作業系統、輸入設備(僅舉幾例),因此設計一個有用的解決方案並非易事。但我們的工程師正在努力,改進 [flutter_adapative_scaffold](https://pub.dev/packages/flutter_adaptive_scaffold) 套件並建立程式碼實驗室,引導您逐步了解如何有效地建立自適應應用程式。同時,請關注 1 月份的 [Flutter Forward](https://flutter.dev/events/flutter-forward),Greg Spencer 和 Justin McCandless 將討論如何使用現有的 Flutter 工具來架構自適應應用程式。

至於拖放和鍵盤快捷鍵,我們已經關注它們一段時間了。實際上,[Shortcuts Widget](https://api.flutter.dev/flutter/widgets/Shortcuts-class.html) 最近已發佈。您可以在最近的「[Widget of the Week](https://www.youtube.com/watch?v=6ZcQmdoz9N8) 集數」中看到它在行動。最後,拖放支援是我們在 2023 年的首要任務之一!

哪些套件可以使 Flutter 桌面開發變得更簡單?

桌面套件的支援還沒有趕上行動和網頁。桌面開發人員最需要的套件是:

  1. 多視窗(35%)
  2. 原生控制項(32%)
  3. 本地儲存(24%)
  4. 網頁檢視(23%)
Horizontal bar chart showing API requests for desktop with the most requested being multi-window and native controls. They were followed by local storage, web views, database access, and Firebase storage.
Which APIs or features do you wish were better supported by Flutter?

此回饋與 Flutter 目前的優先事項清單密切相關,其中包含針對多視窗、原生選單和網頁檢視的 API。在這些 API 發佈後,我們可以開始優先考慮對本地數據儲存和數據庫存取的解決方案。一些目前優先順序較低,但仍值得考慮的其他套件需求是音訊/影片播放器和音訊/影片設備。在 Flutter Vikings 的焦點小組討論中,出現了對支援剪貼簿管理和複雜輸入設備(例如 3D 滑鼠、遊戲手柄控制器)套件的需求,但沒有包含在季度調查中。

如果您有興趣為桌面的 Flutter 套件做出貢獻,請考慮透過建立套件來填補這些空白,或提交 PR 到現有套件,來幫助發展 Flutter 生態系統。我們相信,透過共同努力,Flutter 套件生態系統將會成長並適應,以更好地支援桌面開發人員。

還需要哪些額外的桌面文件?

最後一個調查類別涵蓋了 Flutter 的桌面文件。對 Flutter 桌面文件的滿意度比 Q3 中對 Flutter 其他文件的滿意度低 13%。接下來,我們詢問了哪些文件可以幫助簡化桌面開發流程。最受需求的文件主題是:

  1. 發佈應用程式(43%)
  2. 自動更新(42%)
  3. 外部函數介面 (FFI)(42%)

此回饋對優先考慮 2022 年第四季度和 2023 年的文件工作非常有幫助。因此,我們的團隊目前正在草擬文件以幫助桌面開發人員發佈他們的應用程式,並包含一個幾乎完成的實用 [程式碼實驗室](https://github.com/flutter/codelabs/tree/main/ffigen_codelab)!雖然自動更新不是我們為 Flutter 維護的功能,但 Flutter 生態系統中有一些 [社群](https://pub.dev/packages/auto_updater) [套件](https://pub.dev/packages/squirrel) 提供了此功能。因此,它不是我們優先考慮提供額外套件的項目。請參閱 [pub.dev](http://pub.dev) 以獲取自動更新套件及其相關文件。

A horizontal bar chart showing documentation requests for desktop with publishing apps, automatic updating, and FFI being the most requested.
Which of the following desktop-specific topics do you wish was better documented?

下一步是什麼?

在 2023 年,Flutter 團隊將根據您的回饋優先考慮工作。我們正在積極研究多視窗和原生選單列的解決方案。拖放也是我們的首要任務之一。正在進行任務分析,以確定如何使應用程式部署更有效率;有關此主題的額外文件即將推出。我們還正在努力改進 Flutter DevTools,以便您更好地監控應用程式效能並修復記憶體洩漏。最後,我們正在建立程式碼實驗室並調查對 flutter_adaptive_scaffold 套件的改進,以幫助開發人員使用 Flutter 建立自適應的跨平台應用程式。

現在我們已經設定了基準,我們將實施這些改進,並與 Flutter 開發人員聯繫以衡量我們的成功。因此,請關注未來的 Flutter 調查!

感謝所有在 Q3 Flutter 調查中提供桌面回饋的人,並感謝那些抽出時間在 Flutter Vikings 與我們交談的人!您的回饋意見價值連城。如果您希望參加季度調查之外的未來研究,您可以 [註冊參加即將舉行的 UX 研究](https://docs.google.com/forms/d/e/1FAIpQLSe0i4De809KXVCdljGKrjMj3lxhuzbuFKCtY5PEQPCYtGxFMg/viewform)。


我們如何改進 Flutter 的桌面體驗? 最初發佈在 Flutter 上的 Medium,人們在那裡透過突出顯示和回應這個故事來繼續討論。

http://creativecommons.org/licenses/by/4.0/

【文章內容使用 Gemini 1.5 Pro 自動產生】

關於 Firebase SDK、快速修復和重構,以及目標平台

在過去的幾年中,超過 10,000 名 Flutter 開發人員參與了每季度的使用者調查,以提供回饋給 Flutter 團隊。最近一季也不例外——Flutter 團隊希望收集開發人員關於四個主題的回饋:1)Firebase SDK,2)快速修復和重構,3)目標平台,以及 4)桌面支援。在這些主題中,調查向每位受訪者展示了兩個隨機主題。感謝所有回覆的開發人員!

本文將涵蓋前三個主題的結果。我們將在另一篇文章中涵蓋最後一個主題(桌面開發)。

在深入探討前三個特殊主題的結果之前,我們想報告一下 Flutter 開發人員仍然非常喜歡這個框架。在調查的受訪者中,55% 的人對 Flutter 非常滿意,另外 38% 的人對 Flutter 有點滿意。這使得滿意的開發人員總數達到 93%。這個數字在過去三個季度一直很穩定。非常滿意 的開發人員比例略微下降至 55%。我們計畫追蹤這個指標,並研究是什麼可能導致開發人員的滿意度從 非常滿意 降至 有點滿意

圖 1. 對 Flutter 的滿意度隨時間推移

圖 2 所示,我們的受訪者非常喜歡核心框架、Android 支援和 Material Widgets。我們最大的機會在於 Cupertino Widgets 和 Web 支援。我們將繼續研究改善這些領域的開發人員體驗所需做的事情,並進一步投資以推動其進步。如果您想參與未來的使用者研究,可以在 flutter.dev/research-signup 上註冊。

圖 2. 對子系統的滿意度

Flutter 的 Firebase SDK

Flutter 開發人員使用 Flutter 的 Firebase SDK(又名 FlutterFire)來使用 Firebase 提供的工具和服務。這些包括驗證、資料庫、分析和訊息。目前,在 pub.dev 上有十五個穩定的 Firebase Plugin 套件 可用。由於這些套件被廣泛採用,我們想探討一下什麼樣的學習材料能夠提高其可用性。

我們學到的最有用的資訊是開發人員在嘗試使用各種 Firebase 套件時遇到的問題。如 圖 3 所示,開發人員指出「缺乏實際範例」是他們在嘗試使用新的 Firebase 套件時遇到的最常見問題(14.2%)。這對於具有許多活動部件的複雜套件來說尤其成問題,例如 firebase_messaging 或 firebase_dynamic_links。為了解決這個問題,我們將在 Firebase 文件 中加入更多範例應用程式。我們將加入兩種類型的範例應用程式。第一種,「快速入門範例」將涵蓋特定 Firebase 套件的使用。第二種將提供更複雜的實際範例應用程式,這些應用程式使用多個 Firebase 套件。

圖 3. 採用 Flutter 的新 Firebase SDK 時遇到的問題

在調查中,一些開發人員還選擇了「API 設計過於複雜或不方便」。這個結果在許多套件中都一致,例如 firebase_database、firebase_in_app_messaging,包括前一節中提到的套件。我們發現這個結果值得注意。雖然一些 API 很簡單且很小,但它們涵蓋的概念,例如異步資料,並不像那樣簡單。有鑒於此,我們將努力簡化學習材料。此外,我們還將努力使新舊 API(用於工具和服務)盡可能易於理解。

「總體而言,文件品質很低」是前三個問題中的最後一個。為了回應這個需求,我們計畫改善 Flutter 開發人員的 Firebase 文件。我們將在 Firebase 文件中為 Firebase UI 套件(例如 Firebase UI for Auth)新增新章節,並在整個文件中新增更多程式碼範例。這些改進將在未來幾個季度陸續推出。

快速修復和重構

2022 年的第一個調查 中,開發人員指出,快速修復和重構是我們 IDE 中最缺乏的或支援不足的功能。如 圖 4 所示,我們在 IDE 中支援快速修復和重構,但我們想了解開發人員為什麼認為 IDE 缺少或沒有支援這些功能。

圖 4. VS Code 中的快速修復和重構

首先,我們了解到超過一半的受訪者認為快速修復和重構運作良好(53.1%),如 圖 5 所示。然而,34.6% 的人表示需要新增更多功能。這個數字幾乎是要求我們修復錯誤的開發人員人數的三倍(12.4%)。

圖 5. 快速修復和重構的當前狀態

然後,我們詢問那些想要新增功能的人,他們需要哪種類型的快速修復或重構功能。在設計這個問題之前,我們審查了所有相關的 GitHub 議題,並進行了一項簡短的 Twitter 調查,將各種功能請求分組。您可以在 圖 6 中看到這些組別的列表。

圖 6. 快速修復和各種重構功能的重要性

從這個問題中,我們了解到受訪者認為新增更多快速修復以「修復編譯錯誤、警告或 lint」比其他修復更重要(76.4% 「非常重要」),儘管這並沒有降低其他功能的重要性。我們還了解到,受訪者認為「提取或移動 Widget」比其他重構更重要(69.2% 「非常重要」)。我們現在知道,儘管我們支援提取和移動 Widget,但開發人員想要更多選項,例如將 Widget 提取到一個新檔案中。這與提交的許多 GitHub 議題相符:flutter/flutter-intellij/issues/5591Dart-Code/Dart-Code/issues/1831flutter-intellij/issues/4540dart-lang/sdk/issues/35767 等等。此外,開發人員還想要更多用於重構函式庫、類別或方法(61.9% 「非常重要」)以及管理匯入(59.7% 「非常重要」)的功能。

所有這些資訊對 Dart Analyzer 團隊非常有價值,他們將審查診斷資訊,以找出更多修復的機會。該團隊已經開始為診斷資訊新增一些新的修復(將與 Dart 2.19 一起發佈),並計畫在未來版本中新增更多修復。

目標平台

Flutter 開發人員可以為六個平台建立可生產的應用程式:Android、iOS、Web、Windows、macOS 和 Linux。在調查的這一部分中,我們想知道開發人員針對了這六個平台中的哪幾個平台,以及他們是否在團隊層級使用 Flutter 進行跨平台開發。我們的問題首先詢問開發人員在哪些平台上編寫程式碼,然後詢問他們的團隊針對了哪些額外的平台。

圖 7 所示,大多數開發人員針對的是 Android (91.7%)、iOS (61.3%) 和 Web (35.5%)。由於這個問題允許多選,因此有一些重疊。統計選取的平台數量,只有 24% 的開發人員在上個月只針對了一個平台。在受訪者中,76% 的人針對了兩個或更多平台,其中 32% 的人針對了三個或更多平台。

圖 7. 開發人員正在積極建立和應用程式的目標平台

此外,我們想知道有多少開發人員屬於開發團隊,團隊成員針對的平台與他們自己不同。例如,開發人員 A 針對 Android,而開發人員 B 針對 iOS。如 圖 8 所示,40% 的開發人員表示他們有同事正在針對與他們不同的平台工作。當我們篩選出那些表示他們自己只針對一個平台的開發人員時,這個數字上升到 61%。

圖 8. 針對額外平台的團隊成員

合併起來,我們可以計算出 91% 的 Flutter 團隊是活躍的跨平台開發團隊(24%*0.61 + 76%)。至少有 72% 的受訪者為 Android 和 iOS 開發了應用程式。在所有受訪者中,34% 的人針對了 iOS、Android 和 Web,12% 的人針對了 iOS、Android、Web 和 Windows。

接下來要做什麼?

我們希望提供一個很好的開發體驗,最大限度地提高生產力。我們從這項調查和其他調查中獲得的見解非常有價值。我們將利用這些結果來優先處理工程任務和對 Flutter 開發人員有用的教育內容。

我們將在 2023 年回來,帶來更多調查結果。在那之前,我們將發表一篇獨立的文章,介紹我們從桌面支援研究中學到的東西。下一篇文章見!


我們從 Flutter 2022 年第三季度調查中學到了什麼 最初發佈在 Flutter 上的 Medium,人們在那裡透過突出顯示和回應這個故事來繼續討論。

【文章內容使用 Gemini 1.5 Pro 自動翻譯產生】

Dart 3 之路:完全可靠的空安全語言

在過去的四年裡,我們將 Dart 發展成為一種快速、可移植且現代化的語言。我們的下一個版本 Dart 3 將完成到完全可靠的空安全語言的旅程。作為這段旅程的最後一步,我們將移除幾個歷史悠久的 Dart 語言和 SDK 工件,包括移除對在沒有可靠空安全的情況下運行的支援。這使得 Dart 更易於學習,並使我們能夠更快地發展 Dart SDK 以支援新功能。要了解 Dart 3 中的主要變化以及如何最好地準備您的應用程式和套件,請继续阅读!

通往 Dart 3 的道路。 (照片由 Niklas Ohlrogge Unsplash 上拍攝)

為什麼要使用可靠的空安全?

許多現代程式語言都支援空安全(也稱為void 安全)。這可以避免空解引用問題,Tony Hoare 將其稱為十億美元的錯誤:「這導致了無數的錯誤、漏洞和系統崩潰,在過去的四十年裡可能造成十億美元的痛苦和損失」( Hoare 2009)。為了解決這個問題,像 Swift、C# 和 Kotlin 等語言支援一種類型系統,您可以將變數宣告為非空永遠不能包含空值)或可空(可以包含值或空值)。這種類型系統可以與靜態分析結合使用,以檢測任何將空值賦值給非空變數的情況。Dart 語言中的空安全支援使用類似的模型,預設情況下變數是非空的,並且只在明確宣告時才允許空值。

更進一步,Dart 在現有語言中引入了可靠的空安全。一個可靠的系統可以保證非空變數永遠不包含空值。在 Dart 空安全的早期規劃中,我們探討了這個主題,以及其他語言所做的權衡。Swift 的設計從一開始就包含了可靠性。TypeScript 本質上是不可靠的,因為它的底層類型系統允許將任何物件視為任何靜態類型。正如您在此 TypeScript 範例中看到的,我們可以將空值賦值給非空變數。出於人體工程學和避免遷移所有現有程式碼的原因,C# 對其空檢查有幾個例外。Kotlin 有幾個不可靠的例外,部分原因是它旨在與 Java 互操作。正如您在此 Kotlin 範例中看到的,泛型可能會觸發空值流入宣告為包含非空元素的列表的情況。

對於 Dart,我們選擇了可靠空安全的路徑。這涉及到一個權衡。在少數情況下,這使得遷移到空安全的成本更高,但會產生一個可靠的類型系統,可以完全信任非空類型註釋。我們可以在我們的編譯器和執行時中基於類型系統的空值方面進行實作優化。我們確切地知道變數何時不為空。我們認為這些是 Dart 的正確權衡。

在 Dart 3 中,所有 Dart 程式碼都將使用可靠的空安全

追蹤議題:SDK #49530

自從我們在Dart 2.12 中將空安全引入 Dart 語言以來已經三年了。如上一節所述,我們認識到遷移現有 Dart 套件和應用程式所需的影響。為了幫助遷移,Dart 支援以三種方式運行您的應用程式程式碼。它可以在沒有空安全的情況下運行,在具有部分空安全的混合模式下運行,或在完全可靠的空安全的情況下運行。當 100% 的程式碼(包括所有依賴項)已遷移時,就會出現完全可靠的空安全。這讓 Dart 開發人員有時間逐步遷移現有程式碼。然而,支援多種模式會增加開銷和複雜性。

首先,Dart 開發人員需要注意所有三種模式。每當您閱讀一段 Dart 程式碼時,您必須檢查語言版本以查看類型預設是否為非空、預設是否為可空,或兩者兼而有之。

其次,在我們的編譯器和執行時中支援所有三種模式會減慢 Dart SDK 的發展速度。這種支援會增加新增功能的成本和複雜性。

在 Dart 3 中,可靠的空安全將是,如前所述和前所述的,唯一支援的模式。在 Dart 3 及更高版本中,SDK 約束下限小於 2.12 的 Pubspec 檔案將停止解析。當您將約束設定為小於 2.12 時,任何包含語言標記的原始程式碼都將失敗(例如 // @dart=2.9)。

根據我們的遙測數據,我們認為目前大約 85% 的 flutter run 執行都使用可靠的空安全。如果您有剩餘 15% 的應用程式或套件,請在 Dart 3 發佈之前遷移,我們預計將在 2023 年年中左右發佈。

我們理解遷移大型程式碼庫可能需要一些時間。我們相信您會發現遷移是值得的。BMW 最近遷移了他們的主要 MyBMW 應用程式,一個非常大的應用程式,由大約 300 名開發人員組成的團隊建立:

_”雖然對於像 MyBMW 應用程式這樣的大規模程式碼庫來說,遷移到空安全肯定並不容易,但 Google 的工具為我們在遷移過程中提供了巨大的幫助。完成遷移後,我們很高興擁有一個錯誤更少的程式碼庫。”_,Christian Schmid,BMW AG

要了解有關遷移的更多資訊,請觀看以下影片,或查看遷移指南

重大語言和 API 變更

除了空安全變更之外,我們還進行了一些其他變更,以移除 Dart 語言和核心函式庫 API 中的歷史工件。這些變更包括移除已停止使用的核心函式庫 API ( #49529)、移除預設參數值的歷史語法 ( #2357),以及要求 tear-offs 是顯式的 ( #2399)。

我們相信這些變更對已遷移到使用空安全的程式碼影響很小。當我們發佈第一個 Dart 3 alpha 版本時,您將能夠快速測試這些較小的重大變更是否適用於您的套件或應用程式。

Dart 3 的新功能

Dart 3 預計還將包含許多新功能,包括改進與其他程式語言的互操作性和新的語言功能。我們將在 2023 年 1 月 25 日的下一個重要活動 Flutter Forward 上詳細討論這個主題。

讓我們來預覽一下一個稱為模式的語言功能。模式使 Dart 語言更具表現力,增加了對更多結構化資料的支援,並透過代數資料類型實現更實用的風格。

以下程式碼顯示了一個在函數上使用多個返回值的範例,以及將這些返回值解構為單個變數的功能:

我們將在明年初分享更多關於此新功能的詳細資訊。要查看預覽,您可以查看語言規範

Dart 3 之後

我們同時致力於許多潛在的新功能,從構思到實驗再到潛在的發佈。因此,一些目前的工作將在 Dart 3 之後完成。

首先,正如我們去年提到的,我們正在致力於支援將 Dart 程式碼編譯為 WebAssembly (Wasm)。Wasm 使 Flutter Web 應用程式能夠在瀏覽器中以完全原生程式碼運行。這是一項龐大的工作,需要的不僅僅是更新 Dart 編譯器。它需要與 W3C 和瀏覽器供應商合作,透過 WasmGC 擴展,在 Wasm 中增加對垃圾回收語言的支援。

其次,我們正在致力於巨集。這些啟用了靜態元程式設計。這種強大的機制允許一段程式碼(巨集)在編譯程式期間修改和擴展程式的原始程式碼。例如,這可以減少反序列化 JSON 或建立資料類別所需的樣板程式碼。

您應該期待在 Dart 3 之後看到這些功能和其他令人興奮的功能。

通往 Dart 3 的道路

如前幾節所述,如果您尚未遷移到可靠的空安全,那麼這是第一步。我們建議您現在就這樣做!

接下來,Dart 3 將透過一系列里程碑推出。我們目前的預期圍繞著這些日期:

  • 2023 年 1 月/2 月左右:Dart 3 alpha 發佈。它側重於啟用早期的 Dart 3 相容性測試。我們預計您將能夠運行靜態分析 (dart analyze / flutter analyze)。我們的目標是任何通過 Dart 3 alpha 靜態分析的應用程式或套件都應支援 Dart 3 穩定版。
  • 2023 年 3 月/4 月左右:Dart 3 beta 發佈。此版本預覽了 Dart 3 中的新功能。您可以使用它來試驗新功能,並就問題或改進建議提供回饋。
  • 2023 年年中左右:Dart 3 穩定版發佈。可靠的空安全成為唯一支援的模式。

總結

Dart 3 版本預計在 2023 年年中左右發佈。它將包含幾個重大變更,主要是停止在沒有可靠空安全的情況下運行。我們希望在 2023 年 1 月或 2 月左右準備好 Dart 3 alpha 版本,您可以用於 Dart 3 相容性測試。

要準備您的應用程式:

  • 完成任何未完成的空安全遷移
  • 驗證您的程式碼沒有使用任何已棄用的 API
  • 運行 dart fix

Dart 3 還將包含幾個新的強大功能,例如模式。我們希望在春季發佈 Dart 3 beta 版本,以展示所有新功能。


通往 Dart 3 的道路:完全可靠的空安全語言 最初發佈在 Dart 上的 Medium,人們在那裡透過突出顯示和回應這個故事來繼續討論。

【文章內容使用 Gemini 1.5 Pro 自動產生】

使用兩個鍵盤支援六個平台

A beautiful sunrise on an idyllic beach. Waves calmly lapping at your toes.

Flutter 的魅力在於輕鬆地為六個平台開發應用程式。痛苦之處在於在六個平台上驗證你的應用程式。

我正在撰寫一個程式碼實驗室,使用 Dart 的外部函式介面 (FFI) 整合來自 iOS、Android、macOS、Linux 和 Windows 的 C 程式碼。這個故事描述了如何在不淹沒我的書桌在裝置的情況下,為 Flutter 支援的所有平台開發。

接受你需要不止一台機器。當你計劃至少在六個平台的子集中建立你的應用程式時,請考慮這並沒有聽起來那麼糟糕。

我可以用兩台機器在六個平台上開發應用程式:一台 macOS 筆記型電腦和一台 Windows 11 桌機。此外,我還有兩個鍵盤、一隻滑鼠和一個魔法觸控板。

以下說明為什麼你需要這兩個平台。

從顯而易見的開始:你需要一台 macOS 機器來為 macOS 和 iOS 開發。蘋果是這麼說的。在 Windows 上為 Windows 開發。這是 Flutter for Windows 預設支援的,因此它是鋪好的道路。Flutter 支援在 macOS 或 Win11 或兩者上進行 Web 和 Android 開發。出於鍵盤熟悉度的原因(我在 macOS 上已經超過十年了),我使用 macOS。

Windows 11 上的 Windows Subsystem for Linux 版本 2 或 WSL2 避免了我需要三個完整的鍵盤。當你在 Ubuntu Summit 上向滿屋子 Linux 狂熱者發表關於 WSL2 的主題演講時,你開始理解過去二十年世界發生了多大的變化。

WSL2 中的 Linux 支援超越了運行圖形化 Linux 應用程式。Visual Studio Code 為 WSL2 主機開發提供了出色的支援。WSL2 在其 Linux 環境內運行 VS Code 的無頭版本,並從 Windows VS Code 實例控制它。這使得 Windows 和 Linux 開發可以在一台機器上進行,使用相同的鍵盤快捷鍵,即使檔案系統佈局不同。

話雖如此,不要嘗試從一個共用的檔案區域運行 Flutter Windows 和 Linux 開發。是的,WSL2 允許你從 Linux 查看 Windows 檔案系統,以及從 Windows 查看 Linux 檔案系統。但是,Dart 將不知道使用哪個二進制檔。另一個小問題是你的原始碼檔案中的行尾也會被混淆。使用 Git 將程式碼傳輸到 Linux 和 Windows 之間,並配置 適當的行尾對映。你的理智會感謝你。

如果你想在 Flutter 支援的所有平台上開發 Flutter,請幫自己一個忙,同時取得一台 macOS 機器和一台 Windows 11 機器。你的編譯時間會感謝你的。


使用兩個鍵盤支援六個平台 最初發佈在 Flutter 上的 Medium,人們在那裡透過突出顯示和回應這個故事來繼續討論。

http://creativecommons.org/licenses/by/4.0/

【文章內容使用 Gemini 1.5 Pro 自動產生】

宣布 Flutter Forward

鎖定 Flutter Forward,下一場全球 Flutter 活動,將於 2023 年 1 月 25 日從肯亞奈洛比現場直播。

現在可以註冊!

隨著今年在 Google I/O 上發佈 Flutter 3,我們完成了 四年前在 Flutter Live 上首次規劃的旅程:為行動裝置、桌面裝置、嵌入式系統和網頁裝置提供一個強大的開源 UI 工具組,用於建立令人驚豔的體驗。

現在,我們準備分享我們正在進行的一些新的投資,這些投資展示了我們計劃在未來一年左右的時間內帶領 Flutter 走的方向。

我們迫不及待地想像我們在 Flutter Live 和 Flutter Interact 中所做的那樣,將我們的全球社群虛擬地聚集在一起。在一個正在經歷快速數位轉型的世界地區,有什麼比談論未來的科技更好的地方呢?

我們很興奮能在非洲舉辦我們的下一場全球活動。不僅 Google 在該地區投入大量資金,包括在奈洛比開設我們的第一個 非洲工程中心,而且 新創事業蓬勃發展數十萬開發人員在非洲互聯網經濟中工作。這是為您提供 Flutter 未來一瞥的完美場所。

以下是可以從活動中期待的事項:

主旨演講

在我們現場直播的主旨演講中,我們將展示我們正在進行的工作 - 並展示更廣泛的社群中其他人在使用 Flutter 時所做的事情 - 以推動 UI 開發的進步。

#AskFlutter 直播

#AskFlutter 將回歸,回答您渴望提出的所有問題,從平台特定的詢問到為何 Dash 總要擁有銳利的喙,從不彎曲。

技術演講

與往常一樣,我們將透過一系列技術演講來擴展主旨演講,涵蓋最新消息、熱門話題,以及使用 Flutter 建立驚豔體驗的秘訣和技巧。

觀看派對

如果您想與其他人一起觀看 Flutter Forward,請參加全球 300 多個城市中其中一個的當地觀看派對。如果您的附近有派對,請務必參加,以便與當地 Flutter 開發人員建立人脈並向他們學習。

敬請期待

自我們上次活動以來,社群規模已大幅擴大,但它仍然是 Flutter 的生命線,也是 Flutter 不斷發展的故事背後的動力。我們非常感謝能再次將全球 Flutter 社群聚集在一起。

在 1 月 25 日之前,我們還有很多計劃,所以 立即註冊,確保您不會錯過議程公告,在您附近找到觀看派對的機會,以及我們為您準備的幾個驚喜。

註冊後,請關注我們的 TwitterLinkedIn,並訂閱 Flutter YouTube 頻道,以確保您不會錯過 Dash 的任何多元宇宙冒險。


宣布 Flutter Forward 最初發佈在 Flutter 上的 Medium,人們在那裡透過突出顯示和回應這個故事來繼續討論。

http://creativecommons.org/licenses/by/4.0/

【文章內容使用 Gemini 1.5 Pro 自動產生】

Introducing the Flutter News Toolkit - 現在接受申請

成為首批使用 Flutter News Toolkit 推出新聞行動應用程式的先驅

過去二十年來,我們獲取新聞的方式發生了巨大的變化。市場研究表明,美國智慧型手機使用者中有 88% 的時間花費在應用程式上,而不是行動網頁瀏覽器上。然而,對於通常資源有限的新聞出版商來說,行動應用程式可能很困難且成本高昂。

建立一個高品質的行動新聞應用程式是一項重大工作:您需要包含豐富的閱讀體驗、出色的導航和搜尋、驗證、廣告整合、通知、個人資料和訂閱,以及量身打造的設計體驗。此外,您還必須針對多個平台(例如 iOS 和 Android)完成所有這些工作,並持續使用最新功能更新您的應用程式,並保持多個產品同步。這對於擁有品牌組合的大型新聞機構來說是一項巨大的努力,以及對於負擔不起專門為每個平台組建大型應用程式開發團隊的小型出版商來說也是如此。

我們投入了資源來幫助新聞機構解決這個問題,利用業界最佳實務和 Google 的強大新工具組。

Introducing the Flutter News Toolkit

我們很高興地宣布 Google 的 Flutter 團隊正在與 Google 新聞倡議 (GNI) 合作,推出 一個免費的工具組,該工具組允許出版商透過將應用程式開發時間縮短高達 80% 來更快地為 iOS 和 Android 建立行動應用程式。

Flutter News Toolkit 是一個易於使用的範本,新聞機構可以在其基礎上建構應用程式,並且包含針對常見使用者介面和應用程式功能的範例程式碼區塊。

我們與世界各地的產業專家和新聞出版商密切合作,了解新聞應用程式的最關鍵功能和使用者工作流程,並整合了 News Consumer Insights 的最佳實務,以幫助您透過 Flutter News Toolkit 達成更高的讀者參與度並實現財務目標。

Flutter News Toolkit 包含關鍵功能,例如:

  • 使用者入學
  • 帳戶建立/登入
  • 內容供應源和內容頁面
  • 分析
  • 通知
  • 社交分享
  • 訂閱
  • 廣告

您可以直接使用這些預先整合的功能,或者輕鬆地修改和替換您喜歡的其他功能。

這張圖片顯示了 Flutter News Toolkit 中提供的一些功能範例
Flutter News Toolkit 中提供的範例功能

Flutter News Toolkit 的早期採用者

Flutter News Toolkit 的早期採用者之一是 Hespress,它是摩洛哥最大的新聞網站之一。Hespress 一直希望透過建立一個針對英語使用者的行動應用程式來接觸更多受眾,但沒有足夠的資源來開始。透過 Flutter News Toolkit,Hespress 能够在 6 週內完成完整的應用程式開發,並且最近推出了他們的應用程式 Hespress English

“Flutter News Toolkit 使用起來很直觀,並且可以自訂,使其看起來和感覺起來像一個真正的 Hespress 應用程式,”Hespress 總經理 El Guennouni Hassane 表示。“它包含我們所需的所有核心功能、區段和佈局。它幫助我們節省了幾個月的開發時間,並優化了重新設計我們的英文應用程式的整個流程,同時維護一個程式碼庫而不是兩個。”

Hespress 英文應用程式的螢幕截圖
Hespress 英文應用程式的螢幕截圖

立即申請以存取 Flutter News Toolkit

隨著我們推出 Flutter News Toolkit,我們將為有興趣在未來 3-6 個月內推出新聞行動應用程式的出版商提供有限的名額。此計畫開放向世界各地的所有出版商和任何語言申請。我們將隨著時間推移擴展我們的計畫,但以下是一些您現在加入可以獲得的優點:

  • 免費存取 Flutter News Toolkit 的所有原始碼和分步指南
  • 能夠按照您的意願修改、刪除或新增新功能
  • Google 在 Play 商店和 Apple 商店推出自訂應用程式的協助
  • 在 Google 的行銷材料中展出的機會

請填寫申請。隨著我們在未來幾個月內推出一般可用性之前改進產品,我們將分批吸納新的出版商。我們期待幫助更多新聞機構擴展其數位影響力、建立受眾關係,並透過多元的收入來源打造可持續的商業模式。

常見問題解答

什麼是 Flutter?

Flutter 是 Google 的開源 UI 工具組,用於從單一程式碼庫建立適用於行動、網頁和桌面的精美應用程式。Flutter 大大縮短了建立和發佈應用程式所需的時間。今天,Flutter 是 最流行的跨平台 開發框架,在全球擁有超過 300 萬名開發人員。有超過 50 萬個 Flutter 應用程式,包括阿里巴巴、BMW、Google Pay、PUBG、Shein 和微信。

Flutter 容易學習嗎?

是的,對於懂其他程式語言(如 Java)的開發人員來說,學習 Flutter 很快。此外,我們還提供了大量的 學習資源 供您開始使用。

我可以在應用程式中使用其他非 Google 服務,例如廣告、分析和訂閱嗎?

當然可以!Flutter News Toolkit 僅旨在提供範例。您不需要使用任何您不想要使用的服務。事實上,可以輕鬆地移除或替換現有的整合,使用其他服務。例如,如果您想使用非 Google 廣告服務,您可以在 `pub.dev` 上找到其他 套件

我需要做多少工作才能推出應用程式?

雖然新聞範本可以降低建立新聞行動應用程式的進入門檻,但這個解決方案仍然需要 Flutter 開發工作。範本不支持无代码或所见即所得的功能或工具(例如仪表板),以便非技术用户修改应用程序品牌和样式。

我們已經規劃了部署流程,並假設有 2-3 位 Flutter 工程師參與此專案。舉例來說,Hespress 等早期採用者在 6 週內完成了他們的應用程式開發。

這張圖片以高階方式規劃了部署流程
高階部署流程

如果我沒有內部開發團隊,如何使用範本?

我們可以推薦 Flutter 機構,協助您將範本完成。聲明免責聲明,Google 與這些機構無關,我們也不會從他們那裡獲得任何利潤分攤。


Introducing the Flutter News Toolkit - 現在接受申請 最初發佈在 Flutter 上的 Medium,人們在那裡透過突出顯示和回應這個故事來繼續討論。

【文章內容使用 Gemini 1.5 Pro 自動翻譯產生】

Google Summer of Code 2022 成果

Google Summer of Code (GSoC) 計劃的重點是讓全球新的開發人員參與開源軟體開發。Google 贊助學生在夏季與一個指導性的開源組織合作,進行一個為期 12 週的程式設計專案。在過去的 17 年裡,已有超過 18,000 名貢獻者參與了 Google Summer of Code。

在 2022 年,Dart 連續第三年作為指導組織參與 Google Summer of Code。繼我們在 3 月份 徵求提案 之後,我們收到了來自世界各地潛在參與者的 50 份專案提案。今天,我們重點介紹了我們在今年夏天指導的一些專案。貢獻者在這篇文章中描述了他們的專案。

Dart 的 JNI 互通性

Mahesh Hegde

Android 平台使用 Java 作為其官方語言。從 Dart 存取其豐富的生態系統將會增加巨大的價值,因此我開發了一個 Java Native Interface (JNI) 與 Dart 的互通性作為我的 GSoC 專案。

package:jnigen 產生繫結,以便從 Dart 使用 Java 類別和方法。jnigen 產生包裝 Java 函式庫的 C 繫結,以及調用這些 C 繫結的 Dart 繫結。支援函式庫 package:jni 提供初始化和存取 JNI 的常用函數。

考慮到 Java 和 JNI 的複雜性,Dart 的 JNI 互通性仍然是實驗性的。互通性可以包裝 Java 語言的基本功能,例如建構函式、靜態和實例方法以及欄位 getter。Java 中的例外會在 Dart 中「重新拋出」,並帶有原始堆疊追蹤。互通性無法從 Dart 子類別化 Java 類別或傳遞回調。在 GSoC 之後,我們計劃改進繫結產生管道,並實作更多 Java 語言功能。

該專案的技術複雜性被證明具有挑戰性。我們知道以前沒有任何使用 JNI 的原生編譯高階語言嘗試過 Java 互通性。當某些東西沒有按預期工作時,我們經常不得不尋找解決方法,例如動態函式庫載入和 JNI 例外。我最終編寫了幾個工具來幫助這個專案。這些工具包括一個從 maven 獲取 Java 原始程式碼的工具,以及另一個建立共享函式庫的工具。我學到了很多關於時間管理、優先排序、測試以及編寫簡潔、可讀和易懂程式碼的知識。

Flutter 社群管理儀表板

Abdelrahman Amer

對於 GSoC’22,我設計並建立了一個 GitHub 上 Flutter 社群儲存庫的管理儀表板。該儀表板透過彙總儲存庫、維護者、存取級別等方面的最新活動來協助 Flutter 社群管理員。它包含一個觸發器來建構和部署到 pub.dev。我使用 Flutter 作為前端,Firebase 作為後端來實作該專案。

在專案期間,我開發了一些有趣的可重複使用的元件,包括:

  1. Firebase 抽象層
  2. MVC Widget 和相關的資料結構類別,用於顯示可按任何欄位排序的任何表格資訊
  3. MVC Widget 和資料結構類別,用於顯示圖形 2D 資料

管理儀表板缺少一些功能,但核心功能已經實作。我期待在 GSoC 時期之後繼續開發更多功能。

GSoC 經驗教會了我寶貴的開發技能,尤其是在 Flutter 方面。我非常感謝這個機會、良好的工作環境、我獲得的經驗以及我從 Majid 那裡獲得的指導。

偵測不正確的版本約束

Arseny Uskov

套件維護者必須為每個 Dart 套件版本分配適當的版本。他們必須決定是否根據依賴於其套件的使用者引入了重大變更。相依套件也假設每個 相依的適當版本範圍是什麼。

在這些方面的不正確假設可能會產生錯誤。我的專案旨在識別和調查這些錯誤的子集。

由 `package:foo` 的不正確版本控制引起的不正確相依約束

該專案提供了工具,可以彙總給定套件的給定版本的公共 API 的一部分。此摘要會識別任何依賴於給定套件的其他套件,這些套件可能有不正確的版本約束。我們涵蓋的使用案例是套件使用在其相依之一中定義的符號,但同一符號未包含該相依的最低允許版本。

公共 API 摘要模型允許一系列其他有趣的靜態分析應用程式。在 GSoC 期間,我們沒有時間探索它們。若要進一步了解,請參閱關於該專案的 API 分析部落格文章、我們面臨的挑戰、從對 pub.dev 生態系統運行分析收集的結果、在實際套件中發現的錯誤以及自行修改專案的起點。

非常感謝所有使用 Dart 申請 Google Summer of Code 2022 的人,感謝今年完成專案的貢獻者,以及感謝幫助使這個程式碼之夏變得精彩的導師。如果您有興趣進一步了解 Dart 在 Google Summer of Code 中的應用,請查看我們 2021 年的文章


Google Summer of Code 2022 成果 最初發佈在 Dart 上的 Medium,人們在那裡透過突出顯示和回應這個故事來繼續討論。

【文章內容使用 Gemini 1.5 Pro 自動翻譯產生】

與 GitHub 合作,為 Dart 套件提供供應鏈安全性

從今天開始,GitHub 在其諮詢資料庫相依關係圖Dependabot 中支援 Dart。這表示 GitHub 現在為 Dart 和 Flutter 應用程式的供應鏈安全性提供全面支援。

要了解這些新功能,請查看 GitHub 部落格文章。要了解這對身為 Dart 開發人員的您意味著什麼,請繼續閱讀。

“隨著 Dart 現在加入我們的供應鏈安全生態系統,GitHub 擴展了其對快速成長的開源社群的支援,”GitHub 資深產品經理 Courtney Claessens 表示。“透過將安全性左移,我們不僅幫助開發人員,還幫助數百萬依賴於 Dart 開發的應用程式的使用者。”

了解套件安全問題

想像一下,您正在構建一個很棒的 Flutter 應用程式。您在 pubspec 中使用了許多非常好的套件(例如 像這樣),並將您的應用程式發佈到多個商店。如果其中一個套件有一個重要的更新來修復安全漏洞,會發生什麼事?您如何才能知道這一點?除了定期手動檢查數十個套件的 CHANGELOG 之外,您無法做到這一點。這是一個真正的挑戰。

這就是 Dependabot 的用武之地。如果您在 GitHub 儲存庫中管理您的原始碼,相依關係圖和 Dependabot 會監控您的 pubspec 相依關係,並讓您知道是否錯過了更新。Dependabot 會提交一個拉取請求,代表您將 pubspec.yaml 更新到套件的最新版本。這一切都是透過 GitHub 中新的 Dart 特定改進實現的。

Dependabot 發送一個 PR 來提升(更新)套件相依關係到更新的版本。
相依關係圖顯示 Dart 套件的相依關係集合。

Dart 套件的諮詢資料庫

此場景依賴於一個高品質的開放安全諮詢資料庫,其中列出了 Dart 套件中已知的漏洞。為此功能,我們與 GitHub 合作,將 Dart 支援加入到他們熱門的 GitHub 諮詢資料庫 中。該資料庫已經包含了數千個其他生態系統(如 npm、NuGet 和 Maven)的諮詢。

從今天開始,您現在可以在為已發佈的 Dart 套件建立諮詢時選擇 Pub 生態系統。

為發佈在 pub.dev 上的 Dart 套件建立新的安全諮詢。

如果您在 pub.dev 上發佈套件,我們建議兩個新的最佳實務。

  1. 使用 GitHub 的 安全諮詢 功能在您的 GitHub 儲存庫中建立新的諮詢。GitHub 會將這些諮詢納入到中央 GitHub 諮詢資料庫中。
  2. 設定您的 安全策略,包括詳細說明使用者如何回報漏洞。

立即保護您的 Dart 儲存庫

新的安全功能現已推出。如果您的原始碼位於公共儲存庫中,Dependabot 已開始監控安全問題。如果您的程式碼位於私有的 GitHub 儲存庫中,您需要更多 設定 才能啟用此功能。


與 GitHub 合作,為 Dart 套件提供供應鏈安全性 最初發佈在 Dart 上的 Medium,人們在那裡透過突出顯示和回應這個故事來繼續討論。

【文章內容使用 Gemini 1.5 Pro 自動產生】

研究 Flutter 開發人員的 IDE 使用情況

2022 年第二季使用者調查結果。作者:李家 Young 和 Ander Dobo

Google 的 Flutter 團隊目前為 Android Studio(基於 IntelliJ-IDEA)和 Visual Studio Code(VS Code)建立和維護支援。我們在這些 IDE 的插件中整合了 Flutter 應用程式開發功能,例如程式碼完成、語法高亮、Widget 編輯輔助、運行和除錯支援等等。自 Flutter 最初推出以來,Flutter 開發人員一直使用這兩種 IDE,Android Studio 傳統上比 VS Code 更受歡迎。如以下圖所示,VS Code 的普及速度比 Android Studio 快,最近在 Flutter 開發中也超越了 Android Studio 的普及程度。

為了更好地了解 Flutter 開發人員在 IDE 選擇背後的思考,Flutter UX 團隊在 2022 年 5 月針對這個主題進行了一項調查。

  • 在本文的其餘部分,「Android Studio」代表 Android Studio 和 IntelliJ-IDEA。
圖 1. 從 2021 年 8 月到 2022 年 7 月,來自每個 IDE 的 Flutter 開發人員數量顯示,VS Code 在最近幾個月變得更加流行。

我們之前對 IDE 的了解

除了 Flutter 開發人員在 2022 年初在 Android Studio 和 VS Code 之間的比例為 50:50 之外,我們還根據之前的調查對開發人員的選擇有了更多了解。

Flutter 開發人員傾向於使用他們熟悉的 IDE

在 2019 年第三季,我們詢問 Flutter 開發人員為什麼他們最喜歡他們使用的 IDE。最常見的選擇是 IDE 對他們來說「更熟悉」。

圖 2. 根據 2019 年第三季的調查結果,80% 的 Android Studio 使用者和 61% 的 VS Code 使用者表示,他們選擇 IDE 是因為熟悉度。

VS Code 使用者重視他們在 IDE 中體驗的速度

上述圖表(圖 2)的另一個值得注意的地方是,68% 的 VS Code 使用者選擇 IDE 是因為它比其他 IDE 快,而只有 12% 的 Android Studio 使用者這麼認為。在一個開放式問題中,VS Code 使用者表示他們喜歡 IDE,因為它輕量級但有很多擴展。

VS Code 使用者對 Flutter 的 IDE 支援感到更滿意

我們還詢問了對 Flutter 的 IDE 支援的滿意度,VS Code 使用者往往更滿意。(當開發人員從 IDE 中打開調查時,我們會記錄他們使用的 IDE。當開發人員點擊調查連結時,我們會通知他們有關此記錄。)

圖 3. 93.3% 的 VS Code 使用者對 Flutter 的 IDE 支援感到滿意,而只有 85.9% 的 Android Studio 使用者感到滿意。

當然,Android Studio 是專門為 Android 開發而設計的完全整合 IDE,因此它在這個目的上具備更豐富的功能集。開發人員表示,在 Android Studio 中處理原生 Android 程式碼和使用重構等便利功能很容易。在下一節中,我們將更深入地探討偏好,以及為什麼開發人員對這些優勢感到不滿意,而沒有在 Android Studio 中使用 Flutter。

我們從 2022 年第二季調查中學到了什麼

上述結果讓我們想知道,為什麼 Flutter 開發人員對 VS Code 的支援比對 Android Studio 的支援更滿意。我們想要了解 Flutter 開發人員真正喜歡 VS Code 的地方。

為了了解這一點,我們向開發人員詢問了一組問題,這些開發人員將他們的首要 IDE 從一個 IDE 切換到另一個 IDE,無論方向如何。我們相信這些開發人員能夠從他們的角度告訴我們每個 IDE 中的獨特價值。

首先,將主 IDE 從 Android Studio 切換到 VS Code 的 Flutter 開發人員更多。

圖 4. 將主 IDE 從 Android Studio(藍色)切換到 VS Code(青綠色)的 Flutter 開發人員比反過來多。

如以下圖表所示,那些切換到 VS Code 的開發人員喜歡它的效能(82%)和可用性(63%)。另一方面,那些切換到 Android Studio 的開發人員喜歡它的功能(51%)、與 Flutter 工具的整合(39%)和原生平台(27%)。

圖 5. 切換到新 IDE 的原因。

儘管如此,約有 23% 的 Flutter 開發人員同時使用 VS Code 和 Android Studio。當我們詢問他們為什麼使用不止一個 IDE 時,出現的最突出的主題是 VS Code 使用者需要使用 Android Studio 和 Xcode 才能實現特定於原生的功能,例如模擬器設定、構建配置、發佈要求(例如金鑰生成和簽署),以及在開發混合 Flutter+原生應用程式時。

圖 6. 22.5% 的 Flutter 開發人員同時使用 VS Code 和 Android Studio。

我們從調查中獲得的另一個見解是,來自不同國家或地區的 Flutter 開發人員偏好不同的 IDE。雖然大多數 Flutter 開發人員更喜歡 VS Code 而不是 Android Studio,但來自中國大陸的開發人員更喜歡 Android Studio(56%)而不是 VSCode(23%)。我們發現這很有趣——Flutter 在全球範圍內被採用,但在不同的開發環境中使用。如果您有來自您國家或地區的任何故事要與我們分享關於這種趨勢的資訊,請在本文下方留言。

圖 7. 按國家或地區劃分的 IDE。包含至少 100 位調查受訪者的國家或地區。

總結

我們的目標是提供一個有用且完整的開發體驗,最大限度地減少開始使用 Flutter 的摩擦,並最大限度地提高開發人員的生產力。我們將考慮這些和未來的研究結果,為未來 Flutter IDE 支援和文件制定路線圖。作為第一步,我們正在對網站的入門文件進行一些小的更新,以反映上述 IDE 偏好和使用模式。

我們從這項調查和其他調查中獲得的見解對我們來說非常寶貴,並確保我們投資於正確的領域,以繼續改善 Flutter 開發人員體驗。感謝所有參與的使用者!如果您有興趣參加未來的使用者研究,您可以透過 https://flutter.dev/research-signup 註冊。我們將在下個季度回來分享第三季度的調查結果。下篇文章見!


研究 Flutter 開發人員的 IDE 使用情況 最初發佈在 Flutter 上的 Medium,人們在那裡透過突出顯示和回應這個故事來繼續討論。

【文章內容使用 Gemini 1.5 Pro 自動產生】

在 Flutter Vikings 大會上宣布 Flutter 3.3

來自美麗的挪威首都奧斯陸的問候,Flutter 社群的成員們正聚集在 Flutter Vikings 大會。Flutter Vikings 是一個為期兩天的由社群驅動的開發者活動,有來自世界各地的專家的三個內容曲目。迄今為止,已有超過 5,000 名開發者註冊,雖然現場活動已售罄,但您仍然可以 免費觀看所有線上課程

Flutter 不斷成長,無論是在使用率還是生態系統規模方面。每天,都有超過 1,000 個使用 Flutter 研發的手機應用程式被發佈到 Apple 和 Google Play 商店,以及更多在網頁和桌面上的使用。而 Flutter 套件生態系統 現在包含超過 25,000 個套件,進一步證明了它的成熟度和廣泛性。

The Dash mascot and her friends celebrating the launch of Flutter 3.3.

今天我們宣布 Flutter 3.3。 這個版本重點放在強化 Flutter 3 中發佈的功能的細化和效能改進。它擴展了對不斷發展的 Material 3 規範的支援,包括幾個新的元件和許多錯誤修復,並且包含針對平板電腦和桌面開發者的新功能,包括 iPad 上的塗鴉手寫支援、可選文字分組和觸控板支援。這個版本還包含 Dart 2.18,它為使用 Swift 或 Objective-C 編寫的程式庫和程式碼引入了 FFI 支援。針對此版本構建的應用程式將在桌面、網頁和行動裝置上體驗到效能提升,因此我們鼓勵您運行 flutter upgrade 以在所有開發者工作站上獲取最新版本!

若要深入了解所有新功能和改進,請查看 Flutter 3.3 發行說明Dart 2.18 宣布部落格文章

Wonderous:一個新的參考應用程式

gskinner 的設計團隊合作,今天我們推出 Wonderous,一個專門用來展示 Flutter 的能力,可以無縫交付高階、美麗的體驗的應用程式。即使它展示了 Flutter 的強大功能,我們也共同打造了 Wonderous,使其本身成為一個美麗的應用程式。從印度阿格拉令人驚嘆的泰姬瑪哈陵到墨西哥尤卡坦半島的奇琴伊察瑪雅遺址,Wonderous 將世界上一些最非凡的地方帶到您的手機上,使用影片和影像探索藝術、歷史和文化的交匯點。

Navigate to the intersection of history, art, and culture. The Wonderous app has been designed to support various accessibility aids.

Wonderous 是一個我們希望您與家人和朋友分享的應用程式,但它也是一個您可以作為開發者探索的開源專案。作為一個真實世界的應用程式,它提供了一系列視覺技巧和最佳實務的綜合示例,我們認為這些技巧和實務會激勵中級到高級開發者。在接下來的幾週裡,gskinner.com 團隊將分享更多有關應用程式製作的技術文章,包括對無障礙功能的支持、可泛化的動畫技巧以及效能的提示和技巧。

若要進一步了解我們開發 Wonderous 的動機,以及與其相關網站、Android 和 iPhone 應用程式以及原始碼的連結,請查看 Flutter 部落格上的 獨立文章

Impeller:我們的全新圖形引擎

除了 3.3 本身的改進之外,團隊一直在努力開發 Impeller我們的下一代渲染層

Impeller 是對 Flutter 引擎核心部分的大規模重寫,它用自訂運行時替換了以前的 Skia 程式碼,該運行時充分利用了現代硬體加速圖形 API,例如 iOS 上的 Metal 和 Android 上的 Vulkan。它提供絲般順暢的動畫,大幅提升了應用程式可以從多平台 UI 工具包中期待的水平。這種差異是直觀的,使用 Impeller 的應用程式可以期待能夠比以前更進一步地突破界限,同時保持鎖定在 60Hz 或更快的更新率。最值得注意的是,Impeller 完全消除了對運行時著色器編譯的需要,而這正是當今應用程式中造成畫面更新率「卡頓」的常見原因。

雖然它尚未完成所有功能,並且我們仍在優化效能,但我們現在正在 Google 級別的應用程式上進行內部測試。如果您從 Apple App Store 下載 Wonderous for iPhone,您將在一個產品級別的應用程式上看到 Impeller 的實際運行。

我們很興奮地宣布,現在可以將 Impeller 作為 iOS 上的早期採用者預覽版提供。 Impeller 不需要更改您的程式碼,除了 啟用標誌 之外。有關 Impeller 架構和如何啟用的更多資訊,請 參閱我們的 Wiki。在開發過程中,Impeller 的早期採用者應該切換到 Flutter 的 master channel,以確保您使用的是最新的程式碼。

我們期待看到利用 Impeller 中的效能和品質改進的應用程式和演示。我們也欣賞 可重現的議題報告,這些報告顯示了當前構建中的效能或保真度回歸。

向 Eric 告別

最後,我們向 Eric Seidel 表示溫暖的告別,他是 Flutter 的聯合創始人之一,本月將離開 Google,開始新的冒險。Eric 是第一個向世界介紹 Flutter 的人,當時它還沒有名字或吉祥物,是在 2015 年的 Dart 開發者峰會 上;他管理了 Flutter 工程團隊的大部分時光,簡而言之,沒有 Eric,就不會有我們所知的 Flutter。

但 Eric 有一顆企業家的心,他的「超級力量」(用他最喜歡的詞之一來說)是作為一個創造者和發起者。因此,當他分享他的創業計畫時,並沒有讓人感到意外。因此,當他離開巢穴,開始他的下一個冒險時,我們向他送去我們的鼓勵和感謝。

以摘錄自 Flutter 1.0 發佈活動 的內容來結束這篇文章,在該活動中,Eric 分享了我們對 Flutter 的願景:一個長期的賭注,我們可以徹底改進構建美麗使用者體驗的體驗。這仍然是我們的願景,並且我們尚未完成。隨著來自世界各地的數百萬開發者依賴它,一個由數千名貢獻者組成的生態系統,以及 Google 的團隊蓬勃發展和壯大,我們希望您能繼續加入我們的旅程!


在 Flutter Vikings 大会上宣布 Flutter 3.3 最初发布于 Flutter 的 Medium,人们在那里通过突出显示和回应这个故事来继续讨论。

http://creativecommons.org/licenses/by/4.0/