RainVisitor Blog

RainVisitor

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

原文:https://medium.com/flutter/learning-flutters-new-navigation-and-routing-system-7c9068155ade

學習 Flutter 的全新導航和路由系統

本文說明 Flutter 的全新 Navigator 和 Router API 如何運作。如果您關注 Flutter 的公開 設計文件,您可能已經看到這些新功能被稱為 Navigator 2.0 和 Router。我們將探討這些 API 如何讓您更精細地控制應用程式中的螢幕,以及如何使用它們來解析路由。

閱讀全文 »

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

原文:https://medium.com/flutter/integration-testing-with-flutter-driver-36f66ede5cf2

使用 flutter_driver 進行整合測試

單元測試確保應用程式的個別部分按預期運作,但整個應用程式呢?這就是整合測試發揮作用的地方。

Flutter driver

如果您從未在 Flutter(或任何地方)進行過整合測試,別擔心!在 Flutter 中為您的應用程式添加整合測試是一項簡單的任務。有一組非常有用的文章將引導您。

  1. 整合測試簡介:這個東西是什麼,我該如何設定?
  2. 處理捲動:我該如何處理捲動到某個東西的常見模式?

到達這一點可以確保您的應用程式可以正常運行、可以到達特定螢幕、特定操作會產生一些結果,等等。您創建的測試取決於您的需求。您可以使用一個測試打開應用程式的所有螢幕,或者使用測試完成特定使用者旅程。

但我們可以使用 flutter_driver 進一步進行效能測試。

效能分析

只需將您的測試用 flutterDriver.traceAction 包裹起來,就會在您的測試運行時記錄您的應用程式的效能。此輸出資料(以 JSON 格式)可以在持續整合 (CI) 測試中使用,以確保例如某些指標保持在特定臨界值之上或之下。該資料還可以用於除錯效能問題。有關如何進行效能分析的詳細資訊,請參閱整合測試文章,效能分析。

作為參考,Flutter Gallery 有個 整合測試,會瀏覽所有演示並為其中的一部分捕獲效能指標。

螢幕截圖測試

螢幕截圖測試是一種渲染 UI、捕獲輸出螢幕截圖,然後將結果與預期圖片進行比較。為您的應用程式添加螢幕截圖測試的一個簡單方法是使用 flutterDriver.screenshot。若要了解更多資訊並查看實際的程式碼範例,請參閱 Medium 文章,使用 Flutter Driver 測試 Flutter UI,作者是社群成員 Darshan Kawar。

此方法可以輕鬆整合到您的持續整合測試設定中,以防止 UI 回歸。Flutter Gallery 有幾個 螢幕截圖測試 和一個 GitHub 工作流程設定,用於自動測試進來的 PR。

a11y 測試

a11y 或無障礙測試是一種可用性測試,用於確保應用程式可以被有障礙的人使用,例如視力障礙、聽力障礙、肢體障礙,等等。使用 flutterDriver.getSemanticsId 驗證語義標籤,例如,驗證所有圖片是否都有語義標籤。

在 Darshan Kawar 的另一篇很棒的文章中,了解更多關於無障礙測試的資訊,在 Flutter 中開發和測試無障礙應用程式。

i18n 測試

i18n 或國際化測試是測試應用程式是否可以在不同的語言和地區使用而無需任何變更的過程。

根據您的本地化程式碼的設定方式,您可以使用本地化的委派來更改語言環境。

ExampleAppLocalizationsDelegate.load(Locale('fr'));

或者,在使用 MaterialApp 時,只需允許覆蓋應用程式的語言環境,以便在不同的語言環境中運行。

在啟動應用程式的驅動程式檔案中,設定語言環境。

額外提示

想知道頁面上是否存在某個元素嗎?

您可以選擇任何適合您的應用程式的超時時間。

結語

到目前為止,您應該對 flutter_driver 的功能有了很好的了解。您可以結合方法以滿足您的需求;例如,使用不同的語言環境執行螢幕截圖測試。如果我們遺漏了什麼,請在評論中告訴我們!若要了解更多資訊,請參閱 flutter_driver API 文件。

關於作者:Pierre-Louis 是滑鐵盧大學的應屆大學畢業生。他住在慕尼黑,是維護 Flutter Material 函式庫的團隊中的一員。他對 UI、UX 和應用程式開發非常感興趣。您可以在 LinkedIn 和 GitHub 上與他聯繫。

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

原文:https://medium.com/flutter/announcing-flutter-windows-alpha-33982cd0f433

宣布 Flutter Windows Alpha 版本

我們的使命是為開發人員提供一個開源、高生產力的框架,用於在任何平台上構建美觀的原生應用程式。到目前為止,我們已經為 Android 和 iOS 發佈了生產級別的支援,擁有 8 個穩定版本,僅 Google Play 商店就發佈了超過 100,000 個應用程式。我們繼續擴大我們的關注範圍,包括其他平台,包括網頁、macOS 和 Linux。今天,我們很高興宣布 Flutter 的另一個目標是為 Windows 發佈 Flutter 支援的 alpha 版本。

閱讀全文 »

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

原文:https://medium.com/flutter/handling-web-gestures-in-flutter-e16946a04745

在 Flutter 中處理網頁手勢

Flutter 發佈了網頁支援,讓您可以建立動態網站。有了 Flutter 網頁、MacOS、Linux 和 Windows 作業系統(甚至在連接到滑鼠、鍵盤或其他週邊設備的行動裝置上),您現在可以存取平台特定行為,包括焦點支援、鍵盤輸入、自訂滑鼠游標和懸停輸入。但是,您如何在 Flutter 中使用這些平台行為呢?

閱讀全文 »

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

原文:https://medium.com/flutter/supporting-ios-14-and-xcode-12-with-flutter-15fe0062e98b

使用 Flutter 支援 iOS 14 和 Xcode 12

與往常一樣,我們的目標是讓開發人員在 Flutter 上取得成功,無論您要鎖定的平台為何。自 6 月宣布 iOS 14 以來,我們一直在努力為 Flutter 加入支援此版本的新功能,包括更新 Xcode 12 支援,以及加入支援 iOS 14 的新功能和改進。

閱讀全文 »

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

原文:https://medium.com/dartlang/google-summer-of-code-2020-results-a38cd072c9fe

Google 暑期程式碼計畫 2020 成果

Google Summer of Code

Google 暑期程式碼計畫 (GSoC) 是一個全球性的計畫,旨在讓學生開發者參與開放原始碼軟體開發。Google 贊助學生在暑假期間與一個指導性的開放原始碼組織合作,進行為期 3 個月的程式設計專案。

閱讀全文 »

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

原文:https://medium.com/dartlang/pub-dev-redesign-747406dcb486

隆重推出全新的 pub.dev

今天,我們推出了全新的 pub.dev 網站。它採用了新的評分指標,讓您可以更好地了解可能有用的套件,並為套件發布者提供更多可操作的回饋,以提高套件品質。為了幫助您找到支援您感興趣的所有平台的套件,我們新增了識別和搜尋多平台套件的功能。總體而言,我們重新設計了使用者介面,目標是提供與我們的 dart.dev 和 dartpad.dev 網站一致的愉悅而優雅的體驗。

閱讀全文 »

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

原文:https://medium.com/dartlang/dart-string-manipulation-done-right-5abd0668ba3e

正確操作 Dart 字串 👉

像許多其他在表情符號開始主導我們的日常通訊和多語言支援在商業應用程式中興起之前設計的程式語言一樣,Dart 將字串表示為 UTF-16 編碼單元序列。這種編碼在大多數情況下都能正常工作,直到國際化的加強和伴隨任何語言出現的表情符號的引入,使得該編碼的固有問題成為每個人的問題。

閱讀全文 »

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

原文:https://medium.com/flutter/handling-404-page-not-found-error-in-flutter-731f5a9fba29

Flutter 釋出了網頁支援,允許您建立動態網站。Flutter 支援處理任何可能來自網頁使用的錯誤,例如 404 錯誤。但是,如何為您的 Flutter 應用程式製作自訂 404 頁面呢?

本文將說明如何建立在使用者導航到不存在的頁面時顯示的自訂頁面。

如何在 Flutter 中將客戶端重新導向到自訂 404 頁面

在瀏覽網際網路時,每個人都遇到過「404:頁面未找到錯誤」。Flutter 透過自動將您重新導向到初始路徑來處理此問題。這通常是您應用程式的首頁。但是,如果您想要像 [AirBnb](https://36bvmt283fg61unuud3h7qua-wpengine.netdna-ssl.com/wp-content/uploads/2013/03/airbnb-404.gif)、[GitHub](https://mamchenkov.net/wordpress/wp-content/uploads/2013/11/github-404.png) 甚至 [Flutter 網站](https://flutter.dev/foo) 那樣擁有華麗的 404 頁面該怎麼辦?您可以使用 Flutter 很輕鬆地做到這一點。

若要建立自訂 404 頁面,您的應用程式需要使用 MaterialApp、CupertinoApp 或 WidgetsApp Widget。大多數應用程式使用這三個 Widget 之一;它是在建立 Flutter 應用程式時呼叫的第一個 Widget。

MaterialApp 會將頂層 Navigator 組態設定為按以下順序搜尋路徑:

  1. 對於 `/` 路徑,如果非空,則使用 [home](https://api.flutter.dev/flutter/material/MaterialApp/home.html) 屬性。
  2. 否則,如果它包含該路徑的條目,則使用 [routes](https://api.flutter.dev/flutter/material/MaterialApp/routes.html) 表格。
  3. 否則,如果提供,則呼叫 [onGenerateRoute](https://api.flutter.dev/flutter/material/MaterialApp/onGenerateRoute.html)。它應該為任何有效的路徑返回一個非空值,這些路徑未由 [home](https://api.flutter.dev/flutter/material/MaterialApp/home.html) 和 [routes](https://api.flutter.dev/flutter/material/MaterialApp/routes.html) 處理。
  4. 最後,如果所有其他方法都失敗了,則呼叫 [onUnknownRoute](https://api.flutter.dev/flutter/material/MaterialApp/onUnknownRoute.html)。

如果您的路徑在這些表格中都沒有處理,則它使用 [onUnknownRoute](https://api.flutter.dev/flutter/material/MaterialApp/onUnknownRoute.html) 屬性來處理您的導航。此回呼通常用於錯誤處理。例如,此函數可能會始終產生一個「未找到」頁面,描述未找到的路徑。位置不明的路徑可能是由於應用程式中的錯誤或從 Android 意圖等外部請求推送路徑造成的。

以下範例程式碼演示如何為 onUnknownRoute 屬性定義一個匿名函數,該函數使用 RouteFactory,RouteFactory 是一個工廠方法,它以 RouteSettings 函數作為輸入,並返回一個 Route。以下程式碼片段顯示定義 onUnknownRoute 屬性可以多麼簡單:

1
2
3
onUnknownRoute: (settings) {
return MaterialPageRoute(builder: (_) => PageNotFound());
},

PageNotFound 是一個自訂 Widget,用於建立 404 頁面。此頁面可能會說明發生了什麼情況,並將使用者重新導向到首頁,但在建立 404 頁面時,您可以隨心所欲。

結束語

在建立 Flutter 應用程式時,重要的是要處理任何可能發生的問題。在 MaterialApp、CupertinoApp 或 WidgetApp 中使用 onUnknownRoute 屬性,可以讓您處理網站中不可避免的「頁面未找到」錯誤。

若要進一步了解 Flutter 中的路徑,請參閱 Medium 文章 [「使用命名路徑導航 URL 」](https://medium.com/flutter/flutter-web-navigating-urls-using-named-routes-307e1b1e2050)。

關於作者:Jose 最近從大學畢業,現在在 [Material](https://material.io) 工作,Material 是一個設計系統,幫助團隊建立高品質的數位體驗。Jose 的團隊維護 Flutter 的 [material 函式庫](https://api.flutter.dev/flutter/material/material-library.html)。若要進一步了解,請訪問 Jose 在 [GitHub](https://github.com/JoseAlba)、[LinkedIn](https://www.linkedin.com/in/josealba1996/)、[YouTube](https://www.youtube.com/channel/UCOdKA_On0oPe1tz02z1QfxA?view_as=subscriber) 和 [Instagram](https://www.instagram.com/jose.alba/) 上的頁面。

0%