Flutter開發(fā)指南

Flutter簡介

Flutter是谷歌的移動UI框架,可以快速在iOS和Android上構(gòu)建高質(zhì)量的原生用戶界面,F(xiàn)lutter是完全免費、開源的。Flutter組件采用現(xiàn)代響應(yīng)式框架構(gòu)建,這是從React中獲得的靈感,中心思想是用組件(widget)構(gòu)建UI。

框架組成

Flutter包括一個現(xiàn)代的響應(yīng)式框架、一個2D渲染引擎、現(xiàn)成的widget和開發(fā)工具。這些組件可以幫助您快速地設(shè)計、構(gòu)建、測試和調(diào)試應(yīng)用程序。Flutter的核心思想是一切皆為widget。
Flutter框架是一個分層的結(jié)構(gòu),每個層都建立在前一層之上。


在這里插入圖片描述

Android:底層引擎是C++代碼通過Android的NDK編譯,上層通過Dart編譯器編譯,以native code方式運行;
iOS:底層引擎是C++代碼通過LLVM編譯,上層通過AOT-compiled,也是以native code方式運行;

Flutter核心理念

Flutter組件采用函數(shù)式響應(yīng)框架構(gòu)建,組件鑒于當(dāng)前的配置和狀態(tài)來描述視圖,組件狀態(tài)發(fā)生改變,組件會重構(gòu)其配置和狀態(tài)。然后底層框架會將最新的配置和狀態(tài)與先前的做對比,由此產(chǎn)生一個最小的差值,并由此差值來決定底層渲染樹從舊狀態(tài)過度到新狀態(tài)。

熱加載模式

Flutter是采用熱加載模式的,hot reload的原理是插樁,debug模式下,對每一個方法和成員進(jìn)行插樁,運行期間reload就生效了,無需重新安裝。注:全局變量初始化、靜態(tài)成員初始化、main方法不能熱加載。

Material和Cupertino

Flutter 內(nèi)置了對Material(默認(rèn),安卓樣式)和Cupertino (iOS-flavor)的 UI 組件庫。提供了可定制的 UI 組件,不再受制于OEM控件的限制。

Widget

Widget 是每個 Flutter 應(yīng)用的基礎(chǔ)。Flutter 具有一致的、唯一的對象模型—— Widget。Widget 通過組合來組成層級結(jié)構(gòu)。每個 Widget 都內(nèi)嵌在父 Widget 中,并繼承父 Widget 的屬性。

Flutter安裝

必要環(huán)境
  • Git環(huán)境
Mac安裝Flutter SDK
// 修改成國內(nèi)鏡像
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
// 克隆flutter sdk
git clone -b dev https://github.com/flutter/flutter.git
// 配置環(huán)境變量
open ~/.bash_profile
// 添加flutter的環(huán)境變量
export PATH="路徑/flutter/bin:$PATH"
// 保存配置文件
source ~/.bash_profile
// 運行flutter命令
flutter -h
flutter doctor
Windows安裝Flutter SDK,同上
  • 配置環(huán)境變量(用戶變量):
PUB_HOSTED_URL=https://pub.flutter-io.cn    
FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
  • 克隆bate分支到系統(tǒng)路徑中:
git clone -b beta https://github.com/flutter/flutter.git
  • 將克隆下來的項目bin目錄配置到環(huán)境變量Path中;
  • 運行flutter命令;
安裝鏈接設(shè)備工具
brew install --HEAD usbmuxd
brew link usbmuxd
brew install --HEAD libimobiledevice
brew install ideviceinstaller
更新Flutter的版本
終端執(zhí)行命令:flutter upgrade
VSCode安裝插件

需要安裝的插件:Flutter(會自動安裝Dart)

創(chuàng)建項目和運行項目

進(jìn)入vscode -> 查看 -> 命令面板操作,快捷鍵:cmd+shift+p

cmd+shift+p -> Flutter: new project -> 輸入項目名稱
cmd+shift+p -> Debug:Select and Start Debugging -> Flutter -> 運行項目
vscode的快捷鍵

vscode終端下執(zhí)行操作:

R鍵:點擊后熱加載,預(yù)覽效果
P鍵:在虛擬機(jī)中顯示網(wǎng)格
O鍵:切換Android和iOS的預(yù)覽模式
Q鍵:退出調(diào)試預(yù)覽模式

其他快捷鍵:
Shift+Alt+F: 對齊代碼

Dart語言基礎(chǔ)

Dart簡介

Dart是Google發(fā)布的開源編程語言,面向?qū)ο蟮恼Z言,可用于全平臺開發(fā),適用于Web開發(fā),跨平臺移動應(yīng)用開發(fā),腳本或者服務(wù)端開發(fā)。

Dart數(shù)據(jù)類型和方法
  • 變量聲明使用var; final聲明一個不可修改的變量;
  • 常量聲明使用const,必須是編譯器常量;
  • final和const的區(qū)別:
  • Dart的數(shù)據(jù)類型:Number(Int、double)、String、Boolean、List、Map、Runes、Symbols;
  • Dart中的方法可選參數(shù)有兩種形式:根據(jù)命名({})和根據(jù)位置([]);可選參數(shù)必須在具體參數(shù)后面;
  • 匿名方法可賦值給變量,通過變量進(jìn)行引用;
  • 閉包和js類似,是一個方法(對象),定義在其他方法內(nèi)部,可以訪問外部方法內(nèi)的局部變量;

Scaffold腳手架

目的是幫助開發(fā)者快速構(gòu)建APP;Scaffold 實現(xiàn)了基本的 Material Design 布局結(jié)構(gòu)。
Scaffold 有下面幾個主要屬性:

  • appBar - 顯示在界面頂部的一個 AppBar。
  • body - 當(dāng)前界面所顯示的主要內(nèi)容 Widget。
  • floatingActionButton - Material 設(shè)計中所定義的 FAB,界面的主要功能按鈕。
  • persistentFooterButtons - 固定在下方顯示的按鈕,比如對話框下方的確定、取消按鈕。
  • drawer - 抽屜菜單控件。
  • backgroundColor - 內(nèi)容的背景顏色,默認(rèn)使用的是 ThemeData.scaffoldBackgroundColor 的值。
  • bottomNavigationBar - 顯示在頁面底部的導(dǎo)航欄。
  • resizeToAvoidBottomPadding - 類似于 Android 中的android:windowSoftInputMode='adjustResize',控制界面內(nèi)容 body 是否重新布局來避免底部被覆蓋了,比如當(dāng)鍵盤顯示的時候,重新布局避免被鍵盤蓋住內(nèi)容。默認(rèn)值為 true。

Flutter布局

Layout結(jié)構(gòu)

  • Single-child layout widgets:父級widget中只能包含唯一一個子級widget主要有: Contrainer、Padding、Center等;
  • Multi-child layout widgets:父級widget中能包含多個子級widget主要有: Row、Column等;默認(rèn)支持flex布局;

Flutter組件

flutter提供的UI庫: Material-UI庫

TextWidget
  • textAlign:對齊方式
  • maxLines:最大行數(shù)
  • overflow:溢出效果(無效果、省略號效果、漸變效果)

持續(xù)更新。。。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容