1. 程式人生 > >Flutter 入門 --- 內部分享

Flutter 入門 --- 內部分享

八月部門給分配的分享任務,由於專案太趕,推遲一個月。

選 Flutter 這個主題,是因為現在它慢慢流行起來了,而我卻不瞭解,故而藉此契機,上手試試。

簡介

Flutter 是 Google 推出的跨平臺開發框架。

⽬前⽀支援 iOS, Android 開發,對web 端和桌面端支援還在開發中。

2017 年年 5 月,Flutter 釋出第一個版本。

2018 年年 12 月,第一個穩定版本, 1.0 發 布。

Flutter 的開發語言是 Dart 。

Flutter 實現了一整套的跨平臺 UI 框架,包括控制元件,佈局,渲染和開發語言。

Flutter Engine 依靠跨平臺的 Skia 進行渲染,只依賴系統的圖形繪製介面,因此能夠很大程度地抹除不同平臺的體驗差異。

採⽤的 Dart 語言,效能優於其他跨平 臺框架所使⽤的 JavaScript 。

再加上 Google 的⽀持,Flutter 最近⼀年多發展迅速。

Flutter ⽀持 macOS, Windows 和 Linux 作為開發環境。IDE 有 Android Studio, IntelliJ 和 Visual Studio Code。

圖表連結 https://insights.stackoverflow.com/trends?tags=react-native,flutter,ionic,cordova,xamarin

Dart 簡介

☸ OOP
☸ 強型別
☸ 專門為客戶端優化
☸ 跨平臺 (iOS, Android)
☸ 可移植 (ARM/x86)
☸ JIT 和 AOT 執行模式

Language Tour:https://dart.dev/guides/language/language-tour
Dart 第三⽅庫: https://pub.dev/packages

Flutter 分層架構

由底至上,Framework 層組成部分為:

☆ Foundation: 封裝的⼯具類和方法;
☆ Animation: 動畫相關;
☆ Painting: 封裝了 Engine 提供的繪製介面;
☆ Gestures: 觸控事件處理,⼿勢識別器;
☆ Rendering: 渲染庫;
☆ Widgets: 元件庫;
☆ Material: Material Design ⻛格元件庫;
☆ Cupertino: iOS ⻛格的元件庫;

Flutter 專案結構

☸ lib: 寫 Dart 程式碼的地方
☸ ios, android: 原生的宿主項⽬目
☸ build: 執行的中間產物
☸ test: 單元測試
☸ pubspec.yaml: 第三方庫以及資源管理檔案
☸ External Libraries: 庫⽂件
(images 是手動建立的⽬錄)

用 widgets 構建界⾯

Everything is a widget.

Widget 是什麼

它們的作用分別為:

  • Widget: 存放渲染內容和佈局資訊

  • RenderObjectElement: 存放上下文,持有 Widget 和 RenderObject

  • RenderObject: 佈局和繪製

StatelessWidget 和 StatefulWidget

  • StatelessWidget: 靜態展示

  • StatefulWidget: 動態展示(隨外部事件改變)

與原⽣互動

Flutter 提供了 Platform Channels 機制來實現與原生的互動。

詳細可參考 https://flutter.dev/docs/development/platform-integration/platform-channels

參考

● https://flutter.dev/docs
● https://dart.dev
● https://www.yuque.com/xytech/flutter
● https://juejin.im/post/5d728d376fb9a06b051811f4#heading-23

PDF 講稿和 demo 可訪問 Git