Flutter入門基礎筆記

一、Flutter環(huán)境搭建

因我個人原來是iOSer,所以在開發(fā)過程中個人是喜歡 AndroidStudio + XCode 創(chuàng)建及開發(fā)flutter項目凄贩,不太用flutter命令壹甥;詳細環(huán)境搭建可參見:Flutter中文網(wǎng)環(huán)境搭建盹廷,另Mac同學搭建遇到坑可參見:Mac環(huán)境搭建可能遇到的坑巾兆。

二祝拯、Dart基礎知識

2.1碉输、程序入口
void main() { runApp (Text("Hello World", textDirection: TextDirection.ltr)); }
如上端代碼挠锥,與iOS開發(fā)相同都是 mian 函數(shù)為入口函數(shù).
2.2主慰、控制臺輸出
日志輸出函數(shù):
print("hello world")
dart快速即時編寫工具 DartPad 共螺,類似swift里的playground
2.3、變量
Dart 是類型安全 - 使用靜態(tài)類型檢查和運行時的組合情竹,檢查時確保變量的值始終與變量的靜態(tài)值匹配類型藐不。另某些類型注釋時可選的,dart執(zhí)行是會做類型推斷秦效;Dart類型
注:數(shù)字在Dart中也被當成對象雏蛮,所以只要是帶有數(shù)字類型未被初始化的變量值都是null , 未初始換的變量初始值為null
null-aware 運算符幫助做null檢查
bool isExist(a,b){ bool outConn = outArr[a] ?. contains(b) ?? false} ;return outConn;
?.運算符左邊為null時會阻斷右邊算式的調(diào)用阱州,??運算符是當左邊表達式為null時為其設置默認值
如:outArr[a] ?. contains(b) 兩側(cè)表達式任意一個為null 導致結(jié)果都為null
bool outConn = null ?? false 返回結(jié)果為false
bool outConn = false ?? true 返回結(jié)果為false
2.4挑秉、函數(shù)
返回類型 函數(shù)名 (類型 參數(shù)) { return 返回值;}
其中當返回類型為void則無需return
2.5、異步編程
在Dart中使用Future來表示異步操作苔货,在函數(shù)中 async 結(jié)合 await 運算符用于等待Future

_getIP async{
final url="https://www.baidu.com";
var request=await HttpsRequest.request(url);
print(json.decode(request.responseText)['origin']);
}

2.6犀概、聲明式語法
在Flutter中立哑,采用的聲明式編程,而我們之前的Android或iOS 都屬于命令式編程姻灶。
命令式編程:命令“機器”如何去做事情(how)铛绰,這樣不管你想要的是什么(what),它會按照你的命令實現(xiàn)木蹬。

UIView *view = [[UIView alloc] init];
view.frame = self.view.bounds;
view.backgroundColor = [UIColor orangeColor];
我們要告訴“機器”: view的布局是 self.view.bounds view的背景色是 orangeColor
如果需要改變視圖,你通常需要使用選擇器 找到對應實例或擁有者去改變視圖屬性

聲明式編程:告訴“機器”你想要的是什么(what)至耻,讓機器想出如何去做(how)。

return View(
color: red,
child: View2(...),
)
在聲明式風格中镊叁,視圖配置(如 Flutter 的 Widget )是不可變的,它只是輕量的“藍圖”走触。要改變 UI晦譬,widget 會在自身上觸發(fā)重建(在 Flutter 中最常見的方法是在 StatefulWidgets 組件上調(diào)用 setState())并構(gòu)造一個新的 Widget 子樹。

三互广、Flutter入門基礎知識

3.1敛腌、創(chuàng)建并運行Flutter項目
個人推薦使用AndroidStudio 創(chuàng)建Flutter,方便快捷且有圖形化界面易操作惫皱;還能熟悉一個開發(fā)工具何樂而不為呢像樊!
打開AndroidStudio

1.png

2.png
3.png

Android Studio 教程可參考:AS教程

3.2、認識widget并使用widget嵌套成樹
Widget到底什么東?呢旅敷?
我們學習Flutter生棍,從?開始就可以有?個基本的認識:Flutter中萬物皆Widget;
在我們iOS或者Android開發(fā)中媳谁,我們的界?有很多種類的劃分:應?(Application)涂滴、視圖控制器(View Controller)、活動(Activity)晴音、View(視圖)柔纵、Button(按鈕)等等;
但是在Flutter中锤躁,這些東?都是不同的Widget搁料;
也就是我們整個應?程序中所看到的內(nèi)容?乎都是Widget,甚?是內(nèi)邊距的設置系羞,我們也需要使??個叫Paddingt 的Widget來做郭计;
runApp函數(shù)讓我們傳?的就是?個Widget:
我們可以導?Flutter默認已經(jīng)給我們提供的Material庫,來使?其中的很多內(nèi)置Widget觉啊;
import 'package:flutter/material.dart';
material是Google公司推?的?套設計?格拣宏,或者叫設計語?、設計規(guī)范等杠人;cupertino是iOS樣式的widget;
widget嵌套勋乾,如下代碼中:myApp繼承statelessWidget宋下,在myApp內(nèi)又新建一個widget

void main => return(myApp());
class myApp extends statelessWidget {
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar{
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'You have pushed the button this many times:',
), ],),);}}

3.3、創(chuàng)建重用widget
首先要學會創(chuàng)建自己的widget
在Flutter開發(fā)中辑莫,我們可以繼承?StatelessWidget或者StatefulWidget創(chuàng)建??的Widget類学歧;
StatelessWidget: 沒有狀態(tài)改變的Widget,通常這種Widget僅僅是做?些展示?作?已各吨;
StatefulWidget: 需要保存狀態(tài)枝笨,并且可能出現(xiàn)狀態(tài)改變的Widget;
我們先學習創(chuàng)建statelesswidget

class MyStatelessWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return <返回我們的Widget要渲染的Widget揭蜒,?如?個Text Widget>;
}}

build?法的解析:
Flutter在拿到我們??創(chuàng)建的StatelessWidget時横浑,就會執(zhí)?它的build?法;
我們需要在build?法中告訴Flutter屉更,我們的Widget希望渲染什么元素徙融,?如?個Text Widget;
StatelessWidget沒辦法主動去執(zhí)?build?法瑰谜,當我們使?的數(shù)據(jù)發(fā)?改變時欺冀,build?法會被重
新執(zhí)?;
build?法什么情況下被執(zhí)?呢萨脑?:
1隐轩、當我們的StatelessWidget第?次被插?到Widget樹中時(也就是第?次被創(chuàng)建時);
2渤早、當我們的?Widget(parent widget)發(fā)?改變時职车,?Widget會被重新構(gòu)建;
具體的例子這里就不寫了蛛芥。
創(chuàng)建好自己的widget后提鸟,就可以在父widget中調(diào)用自定義的widget小部件了

四、參考

4.1仅淑、dart官方語言文檔見:DartLanguage
4.2称勋、Flutter超全開源框架項目和學習資料匯總

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市涯竟,隨后出現(xiàn)的幾起案子赡鲜,更是在濱河造成了極大的恐慌,老刑警劉巖庐船,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件银酬,死亡現(xiàn)場離奇詭異,居然都是意外死亡筐钟,警方通過查閱死者的電腦和手機揩瞪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來篓冲,“玉大人李破,你說我怎么就攤上這事宠哄。” “怎么了嗤攻?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵毛嫉,是天一觀的道長。 經(jīng)常有香客問我妇菱,道長承粤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任闯团,我火速辦了婚禮辛臊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘房交。我一直安慰自己浪讳,他們只是感情好,可當我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布涌萤。 她就那樣靜靜地躺著,像睡著了一般口猜。 火紅的嫁衣襯著肌膚如雪负溪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天济炎,我揣著相機與錄音川抡,去河邊找鬼。 笑死须尚,一個胖子當著我的面吹牛崖堤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播耐床,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼密幔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了撩轰?” 一聲冷哼從身側(cè)響起胯甩,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎堪嫂,沒想到半個月后偎箫,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡皆串,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年淹办,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恶复。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡怜森,死狀恐怖速挑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情塔插,我是刑警寧澤梗摇,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站想许,受9級特大地震影響伶授,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜流纹,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一糜烹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧漱凝,春花似錦疮蹦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至壁公,卻和暖如春感论,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背紊册。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工比肄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人囊陡。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓芳绩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親撞反。 傳聞我的和親對象是個殘疾皇子妥色,可洞房花燭夜當晚...
    茶點故事閱讀 43,658評論 2 350