我們還詢問了哪些功能需要改進。SEO 被最多開發人員選中(36%),其次是下載(套件)大小(27%)。雖然我們了解索引在網頁上的重要性,但我們最初發佈的網頁支援專注於 Web 應用程式的利基市場,這些應用程式更重視內容創作,因此不需要索引。Rive 使用的 rive.app 就是一個很好的例子。他們有一個用 HTML 編寫的登陸頁面,該頁面對 SEO 友好,而當使用者啟動用 Flutter Web 編寫的主要應用程式時,SEO 就變得不再必要。我們目前的計畫是首先提高 Flutter 在網頁上的品質,使其在 Web 應用程式中表現出色,然後再解決其他用例,例如更重視內容消費的應用程式或頁面。
SEO 被最多開發人員選中為需要改進的功能(36%),其次是下載(套件)大小(27%)。
原始碼檔案中的程式碼範例
由於 Flutter 是一個開源專案,因此您可以在 IDE 中跳轉到 API 的定義並閱讀其程式碼範例,這些範例嵌入在原始碼中。但是,框架團隊正在考慮將程式碼範例從原始碼移到單獨的檔案中,以便啟用語法高亮顯示並將符號轉換為可點擊的連結。(有關更多資訊,請查看 中型程式碼範例 和 測試程式碼範例 的設計文件。)由於這可能會影響您使用文件的方式,因此我們在本次調查中加入了一個部分,以了解有多少人可能會受到提議的設計的影響。
Google Summer of Code (GSoC) 是一個全球性的計劃,旨在讓學生開發人員參與開放原始碼軟體開發。Google 贊助學生在夏季與一個指導性的開放原始碼組織合作進行一個為期 10 週的編程專案。在過去的 16 年中,已有超過 16,000 名學生參與了 Google Summer of Code。
2021 年是 Dart 組織第二次作為指導性組織參與 Google Summer of Code。繼我們在 3 月份 徵集學生提案 之後,我們收到了來自世界各地學生的 92 份專案提案,其中我們非常興奮地接受了 3 個專案。今天,我們很高興與大家分享我們的成果,由參與這些專案的學生進行描述。
我們在開發 Flutter Web 應用程式時遇到的第一個技術挑戰之一是路由問題。當 Router API 發佈時,我們立即重新設計了路由系統以採用它,這被證明對 Web 應用程式更有效。雖然它提供了更好的整合到瀏覽器歷史記錄中,但它對於巢狀路由來說過於複雜。因此,我們讓在頁面之間共享狀態控制器(在本例中是 MobX 儲存)成為可能,以模擬巢狀路由。這種方法使維護和實作變得更加簡單。
我們學到的最主要的一點是 Dart 和 JavaScript 之間的互操作性對於 Web 應用程式的重要性。如果您還目標是 Flutter 支援的其他平台,那麼使用 Web 特定函式庫會有一些限制,但如果您的主要關注點是 Web 應用程式,那麼它可以節省大量時間。我們了解到,使用 JavaScript 函式庫和嵌入 HTML 可以彌補缺少 Web 支援的 Plugin。例如,我們使用這種方法來建立程式碼預覽 Widget,我們將其作為 HTML 嵌入,並使用 JavaScript 函式庫來進行語法高亮顯示。我認為,在建立 Flutter Web 應用程式時,熟悉 JavaScript 非常有幫助,同時還要了解 Dart/JavaScript 互操作性和 HTML 嵌入的優點和限制。
使用 Dart/JavaScript 互操作性建立的程式碼預覽 Widget
我們還了解到,使用 Flutter 為 Web 應用程式優化效能與為 Flutter 支援的其他平台優化效能並沒有太大區别。在大多數情况下,可以使用兩種方法解决问题:
能夠與瀏覽器程式碼整合對於利用 Web 平台的優勢至關重要。Flutter Web 應用程式有兩種方式可以與 HTML 整合:1) 在 Flutter Web 應用程式中使用 HTML 平台視圖,或 2) 將 Flutter 作為內容島嵌入到現有的 Web 應用程式中(有點像 Web 的加到應用程式)。雖然前者現在存在,可能需要改進,但後者將是一個需要進一步設計和開發的新功能。
使用自訂元素嵌入(加到應用程式)
目前,將 Flutter Web 應用程式嵌入到現有的網站/Web 應用程式中的唯一方式是透過 iframe。雖然這對某些使用案例有效,但對於那些逐漸遷移 Web 應用程式以使用 Flutter 來說並不總是理想的解決方案。
在此路線圖中,我們將調查和設計自訂解決方案,讓您能夠嵌入 Flutter Web 應用程式,類似於加到應用程式的行動情境。
这项工作改进了相机和 image_picker 外掛在 Android 上的功能和稳健性。此外,您会注意到 camera 外掛 的早期版本已提供,其中包含 Web 支援 (#4151)。此預覽版為在 Web 上查看相机预览、拍照、使用闪光灯和缩放控件提供了基本支持。它目前不是 认可外掛,因此您需要 显式地添加它 才能在您的 Web 應用程式中使用。