RainVisitor Blog

RainVisitor

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

原文:https://medium.com/flutter/only-a-few-days-left-to-submit-for-the-flutter-puzzle-hack-announcing-the-judges-3b9f4817ae55

在提交截止日期之前完成你的專案!

距離 Flutter Puzzle Hack 提交截止日期只剩下幾天了。我們對到目前為止看到的拼圖感到興奮,並且迫不及待地想看到更多!別忘了,獎品包括 4 台配備齊全的 MacBook、大量 Flutter 周邊商品以及超過 40 位獲獎者的現金,因此請務必提交您的作品,以爭取獲得這些很棒的獎品。

閱讀全文 »

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

原文:https://medium.com/dartlang/quick-fixes-for-analysis-issues-c10df084971a

快速修復分析問題

如果您像我一樣,太多的開發時間都花在修復分析器找到的問題(診斷)上。如果您曾經希望它可以更容易,那麼我有一些好消息要告訴您。分析器產生的許多診斷都可以使用快速修復自動修復。

閱讀全文 »

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

原文:https://medium.com/flutter/q4-2021-user-survey-results-about-null-safety-ecosystem-text-editing-and-mobile-development-5d33341954e9

2021 年第四季使用者調查結果:關於空安全、生態系統、文字編輯和行動開發

去年 11 月,Flutter UX 團隊進行了第 15 次季度使用者調查。調查透過 Flutter 的 IDE 外掛、YouTube、Twitter 和網站宣布。在兩個星期內,我們收集了 10,105 份回覆,創下歷史新高,我們了解到 Flutter 開發人員對 Flutter 仍然感到滿意。對 Flutter 感到滿意的人的比例為 92%,自 2019 年第四季以來一直保持穩定。

閱讀全文 »

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

原文:https://medium.com/flutter/flutter-in-2022-strategy-and-roadmap-8c5eaf7c4275

Flutter 在 2022 年的策略和路線圖

Illustration of the Flutter and Dart mascot, Dash, looking across a cityscape, representing the future for our products.

Flutter 在我們建立成長和動能的過程中所關注的領域

每年,我們和其他 Google 的大型團隊一樣,都會進行規劃過程,以設定我們在未來一年的目標和重點領域。通常,產品團隊會嚴格保護這些文件,因為它們可能包含商業敏感資訊,或與競爭優勢領域相關。然而,作為一個開源專案,我們認為透明度是一種美德:它可以讓人們更信賴我們的未來和方向,並讓其他人更清楚地了解他們的投資如何與我們的投資相連。

閱讀全文 »

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

原文:https://medium.com/flutter/whats-new-in-flutter-2-10-5aafb0314b12

宣布 Flutter 2.10:穩定版 Windows、效能提升、Material 3 更新等等!

我簡直不敢相信又到了 Flutter 穩定版本發佈的時候!大家好,歡迎來到 Flutter 2.10。距離我們上次發佈版本還不到兩個月,但即使在那段時間裡,我們也收到了來自全球 155 位貢獻者的 1,843 個已解決的議題和 1,525 個已合併的 PR。感謝大家辛勤付出,特別是在 2021 年的假期期間。

閱讀全文 »

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

原文:https://medium.com/flutter/announcing-flutter-for-windows-6979d0d01fed

宣布 Flutter for Windows

自我們推出 Flutter 以來,我們一直專注於提供一個跨平台解決方案,用於構建精美的自定義應用程式,這些應用程式被編譯為機器碼,並充分利用您設備的底層圖形硬體。今天,隨著 Windows 作為應用程式目標的首次生產版本支援的發布,我們擴展了這個願景,使 Windows 開發人員能夠從移動開發人員一直以來享有的相同生產力和功能中受益。

An image of a laptop with two light blue birds, representing Dash, the mascot of Flutter and Dart, hovering over the keyboard. The text in the image says, “Flutter + Windows”.

我們對 Flutter 的目標是為您提供構建出色體驗所需的工具,無論您是在為哪個作業系統構建應用程式。因此,我們希望將相同的核心框架和工具帶到您想繪製像素的所有地方。Flutter 允許您精雕細琢 **精美** 的體驗,讓您的品牌和設計成為焦點。Flutter **快速**,直接編譯為機器碼;通過狀態熱重載支援,您可以獲得互動式開發環境的 **生產力**,讓您可以在應用程式運行時進行更改,並立即看到結果。Flutter **開源**,擁有數千名貢獻者為核心框架添加內容,並用套件生態系統擴展它。

幾乎有 50 萬個應用程式使用 Flutter……

到目前為止,我們已經看到了超出預期的發展勢頭,現在已經發布了近 50 萬個使用 Flutter 的應用程式,包括來自 Betterment、BMW 和 ByteDance 等公司的重大應用程式,以及來自 Google 的 30 個團隊的應用程式。在 2021 年,Flutter 根據 Statista 和 SlashData 等分析師的衡量標準,成為最受歡迎的跨平台 UI 工具包:

Extracts from studies by Statista (“Flutter is the most popular cross-platform mobile framework used by global developers… 42% of software developers used Flutter”), SlashData (“The most popular cross-platform frameworks for development include Google’s Flutter (44%)”), JetBrains (“The popularity of Flutter continues to grow. This year it has surpassed React Native to become the most popular…”) and StackOverflow (“Flutter is the #2 loved framework”).

我們自己的數據證實了這一點,在 2021 年的所有四個季度調查中,有 92% 的 Flutter 開發人員對我們的工具表示滿意。 (對於其他 8% 的用戶,我們正在傾聽您的反饋,並希望您也感到滿意!)

一個常見的要求是 Windows 支援。

今天,我們很高興宣布 Flutter 在穩定版本中完整支援 Windows 應用程式。

Windows 和 Flutter

幾年前,我們為 Flutter 構建了一個雄心勃勃的願景,從 iOS 和 Android 上的行動應用程式擴展到其他平台,包括 Web 和 *桌面*。

Flutter 的核心跨越平台:從可移植的硬體加速 Skia 圖形引擎到 Flutter 渲染系統;核心原語,如動畫、主題、文字輸入和國際化;以及 Flutter 提供的數百個 Widget。

但是,桌面應用程式不僅僅是在更大螢幕上運行的行動應用程式。它們是為不同的輸入設備(例如鍵盤和滑鼠)而設計的。它們具有可調整大小的視窗,通常在寬螢幕顯示器上運行。對於關鍵事項(如輔助功能、輸入法編輯器和視覺樣式)存在不同的慣例。它們與底層作業系統中的不同 API 整合:桌面應用程式支援從檔案系統選擇器到設備硬體到 Windows 登錄等數據存儲的所有內容。

因此,雖然我們將 Flutter *帶到* Windows,但我們也為 Windows *量身定制* 了它。

與我們對 Android 和 iOS 的支援一樣,Flutter 的 Windows 實作結合了 Dart 框架和 C++ 引擎。Windows 和 Flutter 通過一個嵌入層進行通訊,該嵌入層託管 Flutter 引擎,並負責轉換和分派 Windows 消息。Flutter 與 Windows 配合將您的 UI 繪製到螢幕上,處理視窗調整大小和 DPI 變化等事件,並使用現有的 Windows 模式進行國際化,例如輸入法編輯器。

An architectural diagram showing the Flutter architecture: at the top is the Flutter framework, built in Dart, which comprises building blocks like Material, the widgets system, rendering objects, animation, gestures, and painting primitives. Below that is the Flutter engine, written in C++, as well as the Skia and text rendering libraries; lastly, the Windows embedder which interoperates with the underlying operating system and passes Win32 messages to the engine.
在 Windows 上,Flutter 使用完全相同的 Dart 程式碼,但利用了原生 Windows API。

您的應用程式可以使用 Flutter 框架的每個部分,在 Windows 上,它也可以直接通過 Dart 的 C 互操作層或使用用 C++ 編寫的平台插件與 Win32、COM 和 Windows 執行時 API 通話。我們還適應了一些常見的 Plugin,以包含 Windows 支援,包括 camera、file_picker 和 shared_preferences。更重要的是,社群已經為各種其他套件添加了 Windows 支援,涵蓋從 Windows 工作列整合到串列埠存取的所有內容。

A list of some Windows packages, including USB support, maps, web, serial port, file selection, window management, TensorFlow, credential management, battery, WMI, printer, screen capture and network connectivity.
已經有數百個套件已適應以支援為 Windows 構建的 Flutter 應用程式。

為了獲得完全自定義的 Windows UI,您還可以利用 `fluent_ui` 和 `flutter_acrylic` 等套件來建立一個精美地表達 Microsoft Fluent 設計系統的應用程式。使用 `msix` 工具,您可以將應用程式包裝在安裝程式中,可以上傳到 Windows 上的 Microsoft Store。

總之,這促進了應用程式的創建,這些應用程式在 Windows 上看起來很棒,在 Windows 上運行很快,並且仍然可以傳輸到其他桌面或行動設備以及 Web。以下是我們到目前為止看到的一些早期範例:

一些使用 Flutter 構建的 Windows 應用程式的早期社群範例,包括 Harmonoid 和 Rows。

Microsoft 和 Flutter

我們詢問 Windows 團隊是否願意分享一些關於 Flutter 支援的意見。以下是 Microsoft Windows 開發者平台公司副總裁 Kevin Gallo 的說法:

“我們很高興看到 Flutter 添加了對創建 Windows 應用程式的支援。Windows 是一個開放平台,我們歡迎所有開發人員。我們很興奮看到 Flutter 開發人員將他們的經驗帶到 Windows,並發布到 Microsoft Store。Flutter 對 Windows 的支援是社群的一大步,我們迫不及待地想看看您將為 Windows 帶來什麼!”

事實上,Microsoft 的幾個團隊都為今天的公告做出了貢獻。特別是,我們想感謝 Fluent 設計團隊為 Windows 上的 Flutter 應用程式貢獻圖標。他們的 `fluentui_system_icons` 套件已獲得 Flutter Favorite 狀態,以證明其品質。

我們還對 Microsoft 在 Windows 輔助功能方面進行的投資印象深刻,我們感謝該團隊的幫助,確保 Flutter 從一開始就支援螢幕閱讀器。將輔助功能視為利基需求是一個錯誤。正如 Microsoft 包容性設計工具包中的這張圖所示,我們都有理由關心提供適合不同永久性、暫時性或情境性需求的體驗。

A diagram showing how accessibility aids can be of use to a wide audience, in three categories: permanent impairments such as blindness or deafness; temporary conditions such as an arm injury or cataract; or situational needs such as a new parent who is holding a baby with one arm, or a driver who is unable to look at a screen.

下面的視頻演示了 Flutter 如何與 Windows Narrator 整合。出於這個視頻的目的,我們故意模糊了螢幕,讓您了解這項功能對需要它的人來說是多麼有價值。

Windows 開發工具的生態系統

我們的工具合作夥伴也正在添加對 Windows 的支援。以下是一些重點:

  • FlutterFlow,低程式碼 Flutter 應用程式設計工具,今天宣布支援 Windows,以及幫助 Flutter 開發人員構建針對桌面使用量身定制的應用程式的功能。
  • Realm 是一個超快速的本地數據存儲。今天發布的最新版本現在支援使用 Flutter 構建 Windows 應用程式,使用 Dart FFI 快速存取底層數據庫,從而為 iOS 和 Android 等行動平台提供現有的支援。
  • Nevercode 已更新其 Codemagic CI/CD 工具以支援 Windows,使您能夠在雲端測試和構建 Windows 應用程式,並自動將應用程式部署到 Microsoft Store。
  • Syncfusion 已更新其 Widget 套件,以充分利用 Windows。如果您訂閱其工具包,您將發現數據可視化組件,例如樹狀圖和圖表,豐富的數據網格 Widget,日曆,甚至支援 PDF 創建和 Excel 電子表格。
  • 最後,Rive 今天宣布即將推出的其熱門圖形工具套件的 Windows 版本,允許設計人員和開發人員創建互動式矢量動畫,這些動畫可以使用狀態機實時響應程式碼。其應用程式即將推出的 Windows 版本提供超快的效能和更低的內存占用率,並將很快在 Microsoft Store 上供下載。
A screenshot of Rive, a motion design tool that is written in Flutter and produces output that can be embedded into any Flutter app.
Rive,即將在 Windows 上的 Microsoft Store 上推出。

看到圍繞 Flutter 建立的成熟生態系統,我們感到非常興奮,我們鼓勵您在使用 Flutter 構建 Windows 應用程式時查看每一個合作夥伴。

Windows 支援在 Flutter 2.10 中推出

構建 Windows 應用程式的穩定、生產級品質支援作為 Flutter 2.10 的一部分提供,該版本今天發布。Flutter 2.10 還包含許多其他功能、效能改進和錯誤修復,這些內容在單獨的部落格文章中詳細介紹。

在接下來的幾個月裡,您將從我們那裡聽到更多關於完成對 macOS 和 Linux 的穩定支援的消息,為您的生產 Flutter 應用程式提供完整的桌面、Web 和行動平台。

同時,感謝您對 Flutter 的支援。我們很興奮看到您為 Windows 構建的內容!

An image of the Dart mascot, Dash. She is sitting behind a laptop computer with a Flutter logo. We can’t see it, but she’s looking at a Windows app built in Flutter!

http://creativecommons.org/licenses/by/4.0/

閱讀全文 »

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

原文:https://medium.com/dartlang/dart-2-16-improved-tooling-and-platform-handling-dd87abd6bad1

Dart 2.16:改進的工具和平台處理

今天,Dart SDK 2.16 版本正式推出。它沒有新的語言功能,但包含許多錯誤修復(包括一個安全漏洞的修復)、改進了對指定 Dart 套件支援平台的支援,以及全新的 pub.dev 搜尋體驗。

閱讀全文 »

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

原文:https://medium.com/flutter/how-to-build-your-own-flutter-slide-puzzle-93721ac5fad2

您可能已經閱讀過 [Flutter 拼圖黑客挑戰](https://flutterhack.devpost.com/),並正在思考如何將您的創造力推向新的極限。我們在此提供有關樣本程式碼庫結構的更多資訊,並提供一些關於如何建立您的比賽提交的一些想法。

滑動拼圖架構

提供的原始碼實作了一個分層架構,使用 flutter_bloc 管理狀態。Bloc 處理從遊戲邏輯到主題的所有內容。所有狀態都以一致的方式管理;針對拼圖邏輯的任何更新,您只需要找到對應的 bloc 並更新它。重設和洗牌遊戲按鈕、計時器和倒計時都是獨立的 bloc,因此這些可能是您考慮實作創造性的其他地方:也許是沙漏作為計時器?或者是一個華麗的洗牌順序?

請注意,所有遊戲邏輯都包含在一個名為 PuzzleBloc 的單一 bloc 中。它將透過事件更新,例如點擊一個磁磚以移動拼圖磁磚的 TileTapped 事件,或使用 PuzzleReset 完全重設拼圖板。每次拼圖更新時,都會發出新的拼圖狀態。

class PuzzleBloc extends Bloc<PuzzleEvent, PuzzleState> {
PuzzleBloc(this._size, {this.random}) : super(const PuzzleState() {
on<PuzzleInitialized>(_onPuzzleInitialized);
on<TileTapped>(_onTileTapped);
on<PuzzleReset>(_onPuzzleReset);
}
  void _onPuzzleInitialized(
PuzzleInitialized event,
Emitter<PuzzleState> emit,
) {...}
void _onTileTapped(
TileTapped event,
Emitter<PuzzleState> emit,
) {...}
void _onPuzzleReset(
PuzzleReset event,
Emitter<PuzzleState> emit,
) {...}
}

自訂主題

樣本拼圖程式碼包含 Simple 和 Dashatar 兩種主題。這些可以用作您自訂主題的起點 - 盡情借用所需部分,或從頭開始。您如何實作拼圖取決於您自己!您可以考慮發揮創造力的其中一個地方是拼圖主題。

Flutter slide puzzle with Dash in the lower right corner

所有演示中的主題都在 PuzzlePage 的頂部發生。它已抽象化,因此您只需要更新一個地方的主題元素,更改就會反映到所有地方。Simple 和 Dashatar 主題都定義了一系列選項,例如螢幕背景、選單、標誌、按鈕、文字顏色、主題是否顯示計時器(Dashatar 主題中出現,但 Simple 主題中沒有),等等。您可以在儲存庫根目錄的「dashatar」和「simple」目錄中找到它們。

/// {@template simple_theme}
/// The simple puzzle theme.
/// {@endtemplate}
class SimpleTheme extends PuzzleTheme {
/// {@macro simple_theme}
const SimpleTheme() : super();
  @override
Color get backgroundColor => PuzzleColors.white;
  @override
Color get buttonColor => PuzzleColors.primary6;
  @override
Color get hoverColor => PuzzleColors.primary3;
  @override
Color get pressedColor => PuzzleColors.primary7;
  ...
}

每個拼圖主題都有一個 LayoutDelegate,它計算該主題的佈局。您可以透過重複使用相同的佈局物件,僅調整一些主題選項來建立新的主題。對於更進階的設計,整個主題 LayoutDelegate 都可以自訂。例如,您可以覆寫 backgroundBuilder 以製作自訂背景,僅在大型螢幕上顯示。

@override
Widget backgroundBuilder(PuzzleState state) {
return Positioned(
bottom: 74,
right: 50,
child: ResponsiveLayoutBuilder(
small: (_, child) => const SizedBox(),
medium: (_, child) => const SizedBox(),
large: (_, child) => const DashatarThemePicker(),
),
);
}

實作動畫

動畫是您在滑動拼圖中探索的絕佳元素。雖然 Simple 主題不包含任何動畫,但 Dashatar 程式碼實作了一些動畫,其中一些是 [交錯](https://docs.flutter.dev/development/ui/animations/staggered-animations) 的。這些動畫由單一動畫控制器驅動,使用 [Interval](https://api.flutter.dev/flutter/animation/Interval-class.html) 調整以延遲動畫,並使用 [Tween](https://api.flutter.dev/flutter/animation/Tween-class.html) 定義動畫的數值範圍。這可以在 Dashatar 拼圖的成功狀態中看到,其中多個 Widget 透過動畫其偏移量和不透明度而逐漸出現。類似地,倒計時器的每個滴答都使用相同的技術,緩慢地增長然後淡出,就像下一個滴答即將出現一樣。

Dashatar slide puzzle mid-shuffle with a puzzle timer above

Dashatar 主題中的大多數動畫都是隱含的。這表示您無需自行撰寫整個動畫,因為 Widget 會自行對屬性更改進行動畫。舉例來說,請查看 DashatarPuzzleTile Widget,了解如何對使用者點擊磁磚時磁磚的移動進行動畫。每當點擊磁磚時,其目前的 position 會更新,並透過隱含動畫的 AnimatedAlign 在給定的 movementDuration 內轉場。

class DashatarPuzzleTile extends StatelessWidget {
...

final Tile tile;

@override
Widget build(BuildContext context) {
return AnimatedAlign(
alignment: FractionalOffset(
(tile.currentPosition.x - 1) / (size - 1),
(tile.currentPosition.y - 1) / (size - 1),
),
duration: movementDuration,
curve: Curves.easeInOut,
child: ResponsiveLayoutBuilder(...),
);
}
}

為網頁設計

樣本拼圖是為網頁而建的。它為三個螢幕尺寸實作了響應式設計:小型、中型和大型。此外,還有一個 ResponsiveLayoutBuilder,它使用 Flutter LayoutBuilder Widget 的包裝器,允許您根據不同的斷點指定不同的 Widget。

由於我們以網頁為目標,因此有一些額外的注意事項需要牢記。應用程式會預先快取圖片和一些音訊,以幫助優化遊戲期間的效能。當使用者到達預設的 Simple 拼圖遊戲時,Dashatar 版本的資產會在後台載入(我們對 [I/O 照片亭](https://github.com/flutter/photobooth) 載入所有道具的方式採取了類似的方法)。這將確保一旦使用者導航到 Dashatar 主題,大多數資產將已經載入,確保順暢的使用者體驗。

雖然應用程式在網頁上很方便,但您可以挑戰自己探索以創新方式讓拼圖擴展到多個平台的方法。您的拼圖在行動裝置和桌面上會是什麼樣子?您如何為多個平台調整您的想法?

無障礙性

滑動拼圖的設計考慮了無障礙性。使用者可以使用鍵盤與拼圖互動。這是透過 RawKeyboardListener 完成的,RawKeyboardListener 是一個在使用者按下或放開鍵盤上的鍵時會呼叫回呼的 Widget。使用者也可以使用螢幕閱讀器與應用程式互動。這是透過 [語義標籤](https://api.flutter.dev/flutter/widgets/Semantics-class.html) 完成的。還有一些提示,使用 Tooltip Widget 為某些操作顯示。如果您要從頭開始建立滑動拼圖提交,我們強烈建議使用上面類似的策略,使您的拼圖對所有使用者都具有無障礙性。

額外想法

您可以隨意使用演示程式碼庫作為您的提交的基礎。或者,您可以從頭開始實作一個新想法。重要的是您的提交是一個有效的滑動拼圖 - 但您如何實現它取決於您自己!

Simple 和 Dashatar 範例應該可以讓您了解您可以自訂的地方,或者您可以自行建立的酷炫事物。我們探索的一個有趣想法是將 [由 Felix Blaschke 建立的 Flutter Plasma](https://flutterplasma.dev/) 投影到拼圖磁磚上。電漿效果可以使用包裝在 Transform Widget 中的 CustomPaint Widget 實現,並使用 AnimationController 進行動畫。您可以在 [此處](https://github.com/felixblaschke/sa3_liquid/blob/main/lib/liquid/plasma/plasma.dart) 找到用在演示中的電漿渲染器的範例。

Slide puzzle with plasma gradient effect displayed on the tiles and rockstar Dash in the lower right corner

另一個想法是從 API 擷取圖片或其他資料。例如,您可以使用 [Google 照片 API](https://developers.google.com/photos) 使用您最喜歡的 Google 照片相簿中的照片製作滑動拼圖。這個挑戰的可能性是無限的!

在此查看樣本拼圖程式碼 [here](https://github.com/VGVentures/slide_puzzle)。在 Twitter 上使用 #FlutterPuzzleHack 與我們分享您的創作。我們迫不及待想看看您會建立什麼!

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

原文:https://medium.com/flutter/announcing-the-flutter-puzzle-hack-ffc74fda6d44

宣布 Flutter Puzzle Hack!

The Flutter Puzzle Hack logo
Flutter Puzzle Hack 標誌

準備好拋開節日塵埃,嘗試一個有趣的程式設計專案,測試您對 Flutter 的知識嗎?我們很高興宣布 Flutter Puzzle Hack,這是我們最新的挑戰,看看您能用 Flutter 做出什麼,以及贏得超過 50,000 美元獎金的機會。我們請您開發出最具創意但可解的滑動拼圖,目標是網頁上的 Flutter。無論您是創造出新的設計、從頭開始重建拼圖,還是以新的有趣方式整合套件,我們都希望看到您能將想像力發揮到什麼程度。

閱讀全文 »

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

Flutter 2.8 的新功能

北半球的季節變換,樹葉變色,氣溫下降,今年的最後一個穩定版本也到來了。歡迎來到 Flutter 2.8!這個版本代表了 207 位貢獻者和 178 位審查者的辛勤工作,共產生了 2,424 個合併的 PR 和 2976 個已關閉的議題。特別感謝本次版本的主要社群貢獻者 Bartosz Selwesiuk,他是 Very Good Ventures 的 Flutter 工程師,他貢獻了 23 個 PR,其中大部分都與 Web 平台的相機功能相關。

閱讀全文 »
0%