Flutter 項(xiàng)目介紹及體驗(yàn)

Flutter項(xiàng)目目錄結(jié)構(gòu)介紹

以我新創(chuàng)建的myflutter項(xiàng)目為例似芝,用vscode打開是這樣:


image.png
文件/文件夾 介紹
.idea IDE自動(dòng)生成,來存放項(xiàng)目的配置信息赐稽。其中包括版本控制信息、歷史記錄等
android android平臺(tái)相關(guān)代碼
build 上線多個(gè)新功能模塊浑侥,并且對(duì)當(dāng)前版本已有功能會(huì)有影響時(shí)
ios iOS平臺(tái)相關(guān)代碼
lib flutter開發(fā)工作目錄姊舵,我們主要編寫的代碼就在這個(gè)文件夾
test 測試代碼目錄
.gitignore git管理文件忽略配置文件
.metadata 項(xiàng)目屬性追蹤文件,自動(dòng)生成寓落,不可編輯
.packages 開發(fā)相關(guān)工具路徑配置文件
myflutter.iml 暫時(shí)我也不清楚
pubspec.lock 記錄已安裝第三方依賴庫的版本信息
pubspec.yaml 第三方依賴庫的配置文件括丁,或者指定本地資源(圖片、字體伶选、音頻史飞、視頻等)。
README.md 項(xiàng)目說明文件

Flutter 入口文件

lib目錄里面的 main.dart 文件就是 flutter項(xiàng)目 的入口文件,
其中的 main 方法是 dart 的入口方法仰税。runApp 方法是 flutter 的入口方法构资。 MyApp 是自定義的一個(gè)組件。

void main()=>runApp(MyApp());

一個(gè)最簡單的Flutter應(yīng)用程序陨簇,只需一個(gè)widget即可吐绵!如上面示例:將一個(gè)widget傳給runApp函數(shù)即可。

runApp函數(shù)接受給定的Widget并使其成為widget樹的根河绽。 在此示例中己单,widget樹由兩個(gè)widget:Center(及其子widget)和Text組成“沂危框架強(qiáng)制根widget覆蓋整個(gè)屏幕纹笼,這意味著文本“Hello, world”會(huì)居中顯示在屏幕上。文本顯示的方向需要在Text實(shí)例中指定苟跪,當(dāng)使用MaterialApp時(shí)廷痘,文本的方向?qū)⒆詣?dòng)設(shè)定矮嫉,稍后將進(jìn)行演示。
在編寫應(yīng)用程序時(shí)牍疏,通常會(huì)創(chuàng)建新的widget蠢笋,這些widget是無狀態(tài)的StatelessWidget或者是有狀態(tài)的StatefulWidget, 具體的選擇取決于您的widget是否需要管理一些狀態(tài)鳞陨。widget的主要工作是實(shí)現(xiàn)一個(gè)build函數(shù)昨寞,用以構(gòu)建自身。一個(gè)widget通常由一些較低級(jí)別widget組成厦滤。Flutter框架將依次構(gòu)建這些widget援岩,直到構(gòu)建到最底層的子widget時(shí),這些最低層的widget通常為RenderObject掏导,它會(huì)計(jì)算并描述widget的幾何形狀享怀。

基礎(chǔ) Widget

Flutter有一套豐富、強(qiáng)大的基礎(chǔ)widget趟咆,其中以下是很常用的:

  • Text:該 widget 可讓創(chuàng)建一個(gè)帶格式的文本添瓷。

  • RowColumn: 這些具有彈性空間的布局類Widget可讓您在水平(Row)和垂直(Column)方向上創(chuàng)建靈活的布局值纱。其設(shè)計(jì)是基于web開發(fā)中的Flexbox布局模型鳞贷。

  • Stack: 取代線性布局 (譯者語:和Android中的LinearLayout相似),Stack允許子 widget 堆疊虐唠, 你可以使用Positioned 來定位他們相對(duì)于Stack的上下左右四條邊的位置搀愧。Stacks是基于Web開發(fā)中的絕度定位(absolute positioning )布局模型設(shè)計(jì)的。

  • ContainerContainer 可讓您創(chuàng)建矩形視覺元素疆偿。container 可以裝飾為一個(gè)BoxDecoration, 如 background咱筛、一個(gè)邊框、或者一個(gè)陰影杆故。 Container 也可以具有邊距(margins)迅箩、填充(padding)和應(yīng)用于其大小的約束(constraints)。另外反番, Container可以使用矩陣在三維空間中對(duì)其進(jìn)行變換沙热。

MaterialApp

Flutter提供了許多widgets,可幫助您構(gòu)建遵循Material Design的應(yīng)用程序罢缸。Material應(yīng)用程序以MaterialAppwidget開始错妖, 該widget在應(yīng)用程序的根部創(chuàng)建了一些有用的widget粪躬,其中包括一個(gè)Navigator, 它管理由字符串標(biāo)識(shí)的Widget棧(即頁面路由棧)。Navigator可以讓您的應(yīng)用程序在頁面之間的平滑的過渡立帖。 是否使用MaterialApp完全是可選的玛界,但是使用它是一個(gè)很好的做法。

常用的屬性:
home(主頁) title(標(biāo)題) color(顏色) theme(主題) routes(路由) ...

Scaffold

Scaffold 是 Material Design 布局結(jié)構(gòu)的基本實(shí)現(xiàn)。此類提供了用于顯示 drawer扒披、snackbar 和底部 sheet 的 API。

Scaffold 有下面幾個(gè)主要屬性:
appBar - 顯示在界面頂部的一個(gè) AppBar
body - 當(dāng)前界面所顯示的主要內(nèi)容 Widget
drawer - 抽屜菜單控件圃泡。
...

demo代碼

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: '首頁',
      home: Scaffold(
        appBar: AppBar(
          title: Text('data'),
          elevation: 30,//設(shè)置標(biāo)題陰影碟案,默認(rèn)0.0
        ),
        body: MyHome(),
        // drawer: ,
      ),
      theme: ThemeData(//主題顏色
        primarySwatch: Colors.yellow,
      ),
    );
  }
}

class MyHome extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Text(
        '首頁內(nèi)容'
      ),
    );
  }
}
demo效果
image.png

參考:
https://flutterchina.club/widgets-intro/
https://flutter.dev

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市颇蜡,隨后出現(xiàn)的幾起案子价说,更是在濱河造成了極大的恐慌,老刑警劉巖风秤,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鳖目,死亡現(xiàn)場離奇詭異,居然都是意外死亡缤弦,警方通過查閱死者的電腦和手機(jī)领迈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來碍沐,“玉大人狸捅,你說我怎么就攤上這事∏谰拢” “怎么了薪贫?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長刻恭。 經(jīng)常有香客問我,道長扯夭,這世上最難降的妖魔是什么鳍贾? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮交洗,結(jié)果婚禮上骑科,老公的妹妹穿的比我還像新娘。我一直安慰自己构拳,他們只是感情好咆爽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著置森,像睡著了一般斗埂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上凫海,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天呛凶,我揣著相機(jī)與錄音,去河邊找鬼行贪。 笑死漾稀,一個(gè)胖子當(dāng)著我的面吹牛模闲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播崭捍,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼尸折,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了殷蛇?” 一聲冷哼從身側(cè)響起实夹,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎晾咪,沒想到半個(gè)月后收擦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谍倦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年塞赂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昼蛀。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡宴猾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出叼旋,到底是詐尸還是另有隱情仇哆,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布夫植,位于F島的核電站讹剔,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏详民。R本人自食惡果不足惜延欠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望沈跨。 院中可真熱鬧由捎,春花似錦、人聲如沸饿凛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涧窒。三九已至心肪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間杀狡,已是汗流浹背蒙畴。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人膳凝。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓碑隆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蹬音。 傳聞我的和親對(duì)象是個(gè)殘疾皇子上煤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容