天天看點

目标全平台的Flutter支援Web應用開發了!

Flutter作為一個可移植的UI架構,已經支援現代Web應用開發了!我們很開心已經釋出了SDK預覽版,這樣你可以在Web浏覽器裡直接運作你的Flutter UI代碼。

原文連結: Flutter Web - 目标全平台開發的Flutter再下一城!- 彙智網

Flutter Web的目标

從去年Beta版釋出以來,客戶們已經使用Flutter來建立可以運作在iOS和Android上的移動應用了。但是,Flutter是以可移植的UI工具集構架的,它還可以運作在其他環境下,例如Windows、Mac、Fuchsia甚至Raspberry Pi。 由于Flutter是使用Dart建構的,它針對原生機器碼和JavaScript都包含了生産級的編譯器,是以我們有了一個堅實的基礎。接下來的挑戰在于需要使用web平台的對等單元來替換基于Skia的圖形引擎和文本渲染器。

要正确地實作這一點,我們需要提供:

  • 60幀/秒快速平滑動畫的性能
  • 與其他平台一緻的行為和視覺感受
  • 可以與目前開發模式內建的高效的開發者工具
  • 在所有現代浏覽器上對核心web特性的支援

雖然用于Web的Flutter還在開發中,在上述幾個方面都還有很多工作要進行,不過我們已經可以和大家分享一個預覽版了,你可以嘗試以下,期待你的回報!

Flutter Web總體架構

Flutter Web的總體架構與用于移動平台的Flutter非常接近:

目标全平台的Flutter支援Web應用開發了!

Flutter架構(上圖中綠色部分)在移動和web平台中共享,它提供了Flutter的UI基礎層的高層次抽象,包括動畫、收拾、基礎元件類、以及大多數應用需要的物化主題的元件集。如果你已經在Flutter上開發,那麼使用Flutter Web時你會感到非常熟悉。

魔力來自于将這些概念翻譯到浏覽器平台。我們重新實作了dart:ui庫,使用基于DOM和Canvas的代碼替換了移動平台上對Skia引擎的綁定。當你為Web平台編譯Flutter代碼時,你的應用、Flutter架構、以及Web版本的dart:ui庫都将編譯為JavaScript,可以運作在任何現代浏覽器上。

目标全平台的Flutter支援Web應用開發了!

我們仔細地擁抱web核心特性,例如将Flutter的路由模型與浏覽器History無縫內建。我們同時也努力讓Flutter适應桌面環境,例如啟用滑鼠滾動、懸停、聚焦等等,雖然這些特性在移動體驗中并不需要。

Flutter Web項目聚焦于架構提供的核心價值:豐富的互動式體驗。而聚焦于文檔的Web内容依然可以通過嵌入Flutter Web可視化元素來獲益。

預覽版本的Flutter Web架構目前是作為已有Flutter架構的一個臨時分支。這使得我們的工程師可以快速實作Web功能,同時核心團隊可以繼續維護并改進生産可用的工具集。我們一進剛開始将浏覽器支援合并到主倉庫。我們計劃提供一個Flutter工具集,提供一個單一的架構來滿足移動、Web以及其他平台的開發需要。

接下來計劃的工作包括:

  • 支援文本相關的特性,例如選中、複制、粘貼
  • 支援插件。對于像位置、攝像頭、檔案通路這些特性,我們希望使用單一API來橋接移動平台和Web
  • 為PWA這樣的科技提供開箱即用的支援
  • 使用已有的Flutter指令行和IDE內建工具來統一web開發工具鍊
  • 使用DevTools調試web應用
  • 性能的改善、浏覽器的支援,以及可通路性

你可以到

flutter.dev/web

檢視示例、文檔以及其他資源的連結,我們期待着看到你的創作!

繼續閱讀