RainVisitor Blog

RainVisitor

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

原文:https://medium.com/dartlang/dart-asynchronous-programming-futures-96937f831137

Dart 非同步程式設計:Futures

許多非同步 Dart API 會返回 futures。

Dart 用於非同步程式設計的最基本 API 之一是 futures——Future 類型的物件。在大多數情況下,Dart 的 futures 與其他語言中的 future 或 promise API 非常相似。

閱讀全文 »

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

原文:https://medium.com/flutter/what-do-flutter-package-users-need-6ecba57ed1d6

由第二季調查意見組成的文字雲 ☁️(連結到原始 圖片,程式碼)

我們最近進行了第六次季度使用者調查,並從超過 7,000 位 Flutter 使用者那裡收集了回應。我們發現 92.5% 的受訪者對 Flutter 感到滿意或非常滿意,略高於 上個季度!我們很興奮地看到 Flutter 的滿意度始終如一。在本文中,我們將探討有關 Flutter 生態系統的一些深入問題,因為我們認識到幫助 Flutter 社群發展生態系統非常重要。

閱讀全文 »

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

原文:https://medium.com/dartlang/dart-asynchronous-programming-isolates-and-event-loops-bffc3e296a6a

Dart 非同步程式設計:Isolate 和事件迴圈

Dart 儘管是單執行緒語言,但它支援 futures、streams、背景工作以及你在現代非同步和(在 Flutter 的情況下)反應式編寫程式碼所需的所有其他功能。本文涵蓋 Dart 支援背景工作的基礎:isolate 和 事件迴圈。

閱讀全文 »

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

原文:https://medium.com/flutter/flutter-for-web-early-adopter-program-now-open-9f1fb146e4c4

迎接生產級 Web 應用程式的積極開發

我們對 Flutter 的願景一直是提供一個快速、高效且開放的工具集,用於在任何平台上創造出色的使用者體驗。我們從行動裝置開始,使用一個已經被成千上萬大大小小的應用程式使用的工具集。今年的 Google I/O 上,我們宣布了 Flutter 對網頁的首次預覽,允許開發人員使用相同的技能和程式碼來定位網頁瀏覽器,而且我們已經看到了 非常 多的興趣。感謝成千上萬的您,你們已經在網頁上試驗 Flutter 並給我們回饋。

閱讀全文 »

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

原文:https://medium.com/flutter/hamilton-flare-design-challenge-54993a7dd0be

Hamilton Flare 設計挑戰

Flutter 社群持續帶給我們驚喜,我們經常看到許多新的計畫,幫助世界各地的開發者學習 Flutter 並樂在其中。VeryGoodVentures 剛宣布與 2Dimensions 合作,為 Hamilton App 舉辦首屆 Flare 設計挑戰。想了解更多資訊,請查看此比賽的 官方網站。

閱讀全文 »

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

原文:https://medium.com/flutter/material-range-slider-in-flutter-a285c6e3447d

Flutter 中的 Material RangeSlider

範圍滑桿是 Flutter 1.7 中釋出的高度自訂元件,用於選擇一組值。本文說明了範圍滑桿是什麼,為什麼您可能需要使用它,以及如何使用 Material 主題自訂 Flutter RangeSlider 的行為和外觀。

閱讀全文 »

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

原文:https://medium.com/flutter/announcing-flutter-1-7-9cab4f34eacf

宣布 Flutter 1.7

今天,我們很高興 宣布 Flutter 1.7 正式推出,這是繼 Google I/O 上重大功能發佈後,一個較小的版本。Flutter 1.7 包含對 AndroidX 和更新的 Play Store 要求的支援、許多新的和增強的元件,以及對客戶報告問題的錯誤修復。

閱讀全文 »

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

原文:https://medium.com/flutter/the-power-of-the-flutters-transform-and-gesturedetector-widgets-6834f5a25be9

當我第一次意識到 Flutter 讓我可以完全控制螢幕上的所有内容,甚至精確到每個像素時,我立即想要超越大多數應用程式 UI 的固定和可預測的世界。我可以使用 [CustomPaint](https://api.flutter.dev/flutter/widgets/CustomPaint-class.html) 繪製的完全自訂 Widget 渴望擺脫典型的 ScrollView 或 Container。我希望能夠移動、放大和縮小,以及在 Flutter 創造的世界中導航。[Transform](https://api.flutter.dev/flutter/widgets/Transform-class.html) Widget 成為我在這個世界中導航的工具,而 [GestureDetector](https://api.flutter.dev/flutter/widgets/GestureDetector-class.html) 提供了控制項。

GestureDetector 提供了對大多數手勢的便捷存取,而 Transform 提供了修改子 Widget 被視角的能力。兩者都是簡單的獨立 Widget,遵循 Flutter 的組合模式。當我們將兩者結合在一起時,Widget 上的每個手勢都成為探索的方式。

變換簡介

儘管功能强大,但 Transform Widget 實際上只做的就是接收一個變換矩陣並將其應用於其子 Widget。這會導致子 Widget 相對於父 Widget 的平移、縮放、旋轉,甚至傾斜,所有這些都由一個簡單的 [Matrix4](https://api.flutter.dev/flutter/vector_math/Matrix4-class.html) 物件指定。

在進行變換時,矩陣非常方便使用,因為它們是可組合的。最初,儲存單獨的平移、縮放、旋轉和傾斜參數非常直观,但很容易在順序等方面造成歧义。

想象一下使用者連續執行一系列手勢。如果手勢只是一系列拖動,那麼我們可以輕鬆地將最終變換儲存為結果位置 Offset。但是,如果使用者拖動,然後在新的位置旋轉,並重複此操作幾次,我們如何跟踪最終狀態?一個 Offset 和一個弧度的倍數是不夠的,即使我們也包括一個焦點。我們必須跟踪使用者執行的操作的不断擴大的清單,並迭代整個過程才能獲得最終狀態。

一個變換矩陣可以與任意數量的其他變換矩陣無限次結合,結果始終是另一個相同大小的單一矩陣。GPU 在執行這種數學運算方面速度非常快,即使是大規模並行運算,例如針對螢幕上的每個像素。這使得它非常適合儲存類似 Transform 這樣的 Widget 的狀態,並且結果是一個非常簡單的 Widget 供 Flutter 開發人員使用。

偵測手勢

如果我們將一些使用者手勢與使用 GestureDetector 更新變換矩陣綁定在一起,那麼使用者就可以自由導航我們向他們顯示的場景。GestureDetector 提供了對拖動等手勢的便捷存取,我們可以使用它進行平移,捏合,用於縮放,甚至用於兩指旋轉。

GestureDetector 為各種手勢及其開始、更新和結束狀態提供了許多不同的回調。但是,如果您實作類似於圖中所示的演示(將幾個手勢結合在一起),那麼您只需要縮放回調。onScaleUpdate 回調提供了一個 focalPoint,水平和垂直縮放,以及旋轉,所有這些都在一個回調中。這允許您同時響應多個手勢,例如,如果使用者正在一個手勢中旋轉和縮放。請查看 [ScaleUpdateDetails](https://api.flutter.dev/flutter/gestures/ScaleUpdateDetails-class.html) 以了解 onScaleUpdate 回調中提供的所有內容。

在這些物理變換中,另一個經常實作的功能是慣性。在使用者完成手勢後,他們可能會期望變換繼續一段時間,然後才緩慢停止。Flutter 在所有這些手勢的結束回調中提供了「速度」參數,包括縮放。正如您可能從基於物理的移動中猜測到的那樣,如果使用者快速移動手指,則此值更大;如果使用者慢速移動手指,則此值更小。

您可以使用 Flutter 的另一個强大基礎設施 [Tween](https://api.flutter.dev/flutter/animation/Tween-class.html) 動畫來建立這種慣性效果。使用手勢結束時的速度和位置,以及一些基本的物理知識,您可以計算出一個最終位置和持續時間,並將其提供給 Tween,讓它處理其他所有事情。Flutter 甚至包括一個 [摩擦模擬類別](https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/physics/friction_simulation.dart) 來為您處理一些這些計算,並使事物感覺非常逼真。

結論

將 Transform 和 GestureDetector 結合起來,為我們提供了一個极其强大的工具。從移動棋盤(如螢幕截圖所示)到導航地圖,到提供互動式圖片檢視器等等,無數的功能都變得可能。

這裡顯示的應用程式目前可以在 [Flutter Gallery 應用程式](https://play.google.com/store/apps/details?id=io.flutter.demo.gallery&hl=en_US) 中作為演示使用。所有程式碼都是 Flutter 開源儲存庫的主要部分,可以在 [變換演示原始碼](https://github.com/flutter/flutter/blob/master/examples/flutter_gallery/lib/demo/transformations/transformations_demo.dart) 中找到。大多數變換邏輯都在 [GestureTransformable](https://github.com/flutter/flutter/blob/master/examples/flutter_gallery/lib/demo/transformations/transformations_demo_gesture_transformable.dart) 類別中,包括 [慣性動畫](https://github.com/flutter/flutter/blob/9d724d4c4483b585dfd4bfd719844802f8b38abe/examples/flutter_gallery/lib/demo/transformations/transformations_demo_gesture_transformable.dart#L503)。

0%