[Flutter翻譯]使用Flutter編寫Flutter開發者的新工具
副標題:為什麼我們在Flutter中從頭開始重建Dart DevTools?
原文作者:medium.com/@filiph
作者:Filip Hracek & Chris Sells
今天,我們釋出了新版本的Dart DevTools,這是我們的一套工具,用於Dart和Flutter程式碼的除錯和效能分析。它已經使用Flutter從頭開始重建。這個版本增加了幾項改進,比如效能和記憶體頁面的更新,以及一個全新的網路頁面。
很多人都知道Flutter的熱過載功能,它可以讓你在移動應用執行時對其進行修改。但熱過載只是我們提供的一套工具中的一個,我們提供的工具可以幫助您編寫、測試、除錯和分析您的應用程式。
首先讓我們花點時間來討論一下我們為什麼要重建DevTools的初衷。簡短的答案是生產力和質量。Flutter團隊瞭解Flutter在構建漂亮、高效能的使用者介面時的生產力優勢--我們希望自己也能享受到這些優勢。這種生產力使我們不僅能夠重建DevTools,而且能夠沿途新增大的新功能。
我們選擇將 DevTools 作為 Web 應用程式釋出,因為它很容易讓我們在所有目標平臺和 IDE 上整合到現有的工具體驗中。以網路為中心進行構建也使我們能夠站在客戶的立場上思考問題;在這樣做的過程中,我們瞭解(並修復)了一些效能問題,例如滾動效能。
我們也一直在評估將DevTools作為編譯後的桌面應用程式釋出的好處,到目前為止,結果是有希望的。選擇Flutter的一個主要好處是,選擇分發模式是我們在寫完程式碼後就可以做的事情,而不是我們必須做出的第一個決定。很多客戶也告訴我們,這是Flutter的一個吸引人的能力。
現在我們已經討論了一點關於DevTools的不久的過去和新的未來,讓我們深入瞭解一下每個Flutter開發者可以使用的所有主要工具的快速概述。因為DevTools並不是唯一值得你關注的工具。
基礎知識
當然,還有flutter
工具,它可以在除錯模式下執行你的應用程式,執行熱過載,構建APK和IPA等等。flutter
工具是用Dart編寫的,在命令列上執行,所以無論你喜歡哪種作業系統或編輯器,都可以使用Flutter。
Dart分析伺服器在各種IDE中提供靜態分析和智慧。這意味著你可以得到程式碼補全...
這恰好是VS Code,但這裡所有的例子在Android Studio中也能使用,當然。
...... 錯誤高亮顯示並連結到如何修復它們的文件.......
對於最常見的靜態錯誤,IDE會連結到一個較長版本的錯誤資訊,包括示例程式碼和常見的修復方法。
......和智慧程式碼檢查。
在這裡,分析器檢測到一個Sink被建立但從未關閉--這可能是記憶體洩漏。
分析伺服器還可以使用語言伺服器協議,這意味著所有使用它的開發工具(有很多)都可以輕鬆支援它。
UI程式碼助手
使用Flutter,你可以通過建立widget樹在程式碼中構建UI。這意味著,很多Dart程式碼都是以巢狀建構函式的形式存在,比如下面的。
return MaterialApp(
title: 'My app',home: Scaffold(
appBar: AppBar(
title: Text('Welcome'),),body: Column(
...
),);
複製程式碼
Flutter工具讓你更容易處理這樣的程式碼。UI指南突出了你正在構建的widget樹。
左邊的線條,被稱為UI指南,明確地將widget樹視覺化。
後面的註釋可以顯示哪個收尾括號屬於哪個widget。
這裡的註釋由IDE顯示,但實際上不是檔案的一部分。
智慧重構可以幫助你在幾筆中修改樹,比如用一個新的父節點包裝一部分......。
用一個SizedBox包裝一個IconButton。
...並移動widget。
開發工具
還有DevTools,這是一套獨立的工具,在瀏覽器中執行。它們提供了額外的遙測和功能,這些功能在IDE中顯示並不實用。
DevTools在瀏覽器視窗中開啟。
我們本週推出的DevTools是用Flutter編寫的。(它們之前是用 Dart 編寫的,但沒有使用 Flutter 框架。)這是一次從頭開始的完全重寫,這為改進 UI 和新增全新的功能帶來了機會。
第一個標籤是Flutter Inspector,這是一個視覺化和探索Flutter widget樹的工具。從這裡,你可以選擇正在執行的應用中的widget,放慢所有動畫,檢視文字基線等。
新功能之一是佈局資源管理器,您可以在細節樹旁邊的Flutter檢查器標籤中找到它。佈局資源管理器讓你檢查Flutter的柔性佈局模型。例如,當你不確定為什麼一排widget看起來不是你預期的方式,或者為什麼你得到 "RenderFlex溢位了42個畫素 "的錯誤時,這可以成為救命稻草。
在Flutter Inspector選項卡旁邊,你會發現三個專門用於效能分析的選項卡:時間軸檢視、記憶體檢視和效能檢視。
時間線檢視現在顯示了每個幀的構建時間以及火焰圖。這使得它很容易識別有問題的幀,同時在上下文中看到它們。
時間線窗格還有新的跟蹤widget構建按鈕,它將您的應用程式中所有widget的構建時間新增到時間線(以犧牲您的配置檔案構建的效能為代價 - 這就是為什麼它預設情況下沒有開啟)。當你試圖找出到底是哪些widget造成了慢幀時,這很方便。
記憶體檢視可以讓你窺視你的應用程式在特定時刻的記憶體使用情況。該檢視現在顯示了分配記憶體的熱圖,並允許跟蹤平臺記憶體。
效能檢視是一個傳統的CPU剖析器。它可以讓你記錄應用程式的一個會話,並檢視CPU在哪些功能上花費了大部分時間,總體而言。這通常用於決定在哪裡進行優化工作。
DevTools甚至包括自己的Debugger。如果您不使用IDE進行開發,但仍然希望選擇新增斷點、逐步檢視程式碼、偷看變數值等,這可能會很有用。
下一個選項卡是全新的。網路檢視讓你檢查,你猜對了,網路流量。你可以看到你的應用程式自啟動以來的全部請求歷史,以及每個請求的詳細資訊。這讓你在試圖除錯網路問題時,不必再自行記錄這些事件。網路選項卡目前顯示的是HTTP流量;未來的改進包括顯示一般的套接字I/O流量。
現在,您還可以在 "時間軸 "檢視中找到網路請求,以便您可以在上下文中檢視它們。
日誌檢視顯示來自你的應用程式和框架的事件。有了它,你可以輕鬆地過濾訊息(例如,你可以指定-gc
來過濾掉Garbage Collector事件,或者flutter.frame
來只顯示frame事件)。在Dart中,日誌訊息可以被結構化,而日誌檢視就利用了這一點。
DevTools適用於移動應用、桌面應用 和 Web應用。
DevTools改寫為Flutter有很多好處:提高了生產力,站在客戶的立場上行走,以及目標平臺的自由選擇。有一個好處我們還沒有提到:在Flutter中重寫DevTools邀請社群更容易做出貢獻。DevTools一直是在開放中開發的,但今天,大多數使用者會熟悉它的結構(從lib/main.dart
中的runApp(DevToolsApp(...))
開始)。
概要
工具對 Flutter 開發者的體驗至關重要。我們每天都會投入大量資金使其更好。但我們只能通過您的反饋來實現這一點。
因此,今天就升級到最新的 DevTools,並在您的應用程式上進行測試。閱讀文件,瞭解所有隱藏的精華。如果您發現錯誤,請反饋問題,或在GitHub上為新功能投票。
我們希望新的DevTools能讓您的Flutter開發體驗更加愉快。
通過www.DeepL.com/Translator(免費版)翻譯