flutter 實(shí)戰(zhàn)一:項(xiàng)目搭建和靜態(tài)頁面

打開android studio 選擇 flutter
然后出現(xiàn):(第一次會比較久)

選擇

有 應(yīng)用 插件 包 模塊 4個開發(fā)選擇芳来,我英語不好帮坚,理解錯了請告訴我7戮!F嫱健锹引!
我選擇 應(yīng)用 Application
next
選擇你的flutter位置

直接finish
目錄結(jié)構(gòu):
截圖

看起來還是比較常規(guī)的~
主要的:
android ios 兩個配置的地方
lib寫代碼的地方
flutter的語法是dart冶伞,給我的atom下個插件,然后學(xué)習(xí)一下dart語法恳蹲,做好準(zhǔn)備工作虐块!
flutter的icons庫https://docs.flutter.io/flutter/material/Icons-class.html
flutter真的沒有一個好用方便的文檔,很多信息都需要自己追溯嘉蕾,看源碼贺奠。。command+點(diǎn)擊你要追擊了解的單詞错忱。儡率。去看看這個組件需要的參數(shù)和作用吧!
flutter / Dart常用知識點(diǎn):
重載:r
熱重載:R (在窗口flutter run的前提下可執(zhí)行)
void:定義函數(shù)
int string:定義數(shù)字和字符串
Scaffold:主要布局空間(常用最外層)
Column:垂直布局(children 列表)
Center:居中布局
AppBar:頭部(app開發(fā)中常見的頂部)
Container:容器以清,塊空間(child儿普,空間里的組件,屬性decoration,繪制一個背景圖案掷倔,foregroundDecoration眉孩,繪制一個前景圖案)
Text:文本
floatingActionButton: 浮動按鈕
RaisedButton:凸起按鈕
MaterialButton: 只有文字的按鈕
TextFormField:文字輸入
TextField:輸入框
Image:圖片
Icon:圖標(biāo)

flutter設(shè)置一些參數(shù)的時候需要用到:EdgeInsets
例如:padding: new EdgeInsets.only(top: 50, left: 40, right: 40, bottom: 19),
only 代表你可以選擇輸入某個參數(shù),
all 代表你傳入一個值會負(fù)值給所有需要參數(shù)的參數(shù)
padding: new EdgeInsets.all(50)
顏色:Colors.blue[200],
圓角:BorderRadius.circular(23) 相當(dāng)于all勒葱,.vertical(top:10, bottom:10) 上下浪汪,.horizontal()左右, .only()上下左右。

以上講的組件是我在接下來的”實(shí)驗(yàn)“app中將要使用到的凛虽,更細(xì)致的就在app代碼中看吧~
先看下我做完的效果:


裝車單頁面
歷史單據(jù)頁面
我的頁面
配送單詳情頁面

我做了4個頁面死遭,有三個是還是空的,主要看裝車單涩维,然后還有路由殃姓,flutter的路由是很簡單的袁波,只要引入在主頁面引用一下就好了,但是flutter的圖片引入比較麻煩蜗侈,需要在pubspec.yaml里聲明篷牌,然后才可以使用。


目錄結(jié)構(gòu)

先說圖片引入:
圖片聲明

路徑不要錯哦踏幻,路徑看你的圖片在哪里枷颊,不用特定的位置,我放在最外層该面。
圖片

你的圖片文件需要有2.0x 和 3.0x的目錄夭苗,這個應(yīng)該不用解釋哈,這里需要命名一致隔缀,不然會取錯哦题造。

//圖片使用
new Image.asset('images/order-empty.png')

圖片最簡單的使用就是這樣啦。
下面看頁面之間跳轉(zhuǎn)

//配送單頁面猾瘸,新路由
import 'package:flutter/material.dart';

class Page2 extends StatefulWidget {
  Page2({Key key, this.title}) : super(key: key); //這里注意不是路由的跳轉(zhuǎn)不需要這里
  final String title;
  @override
  _PageState createState() => _PageState();
}

class _PageState extends State<Page2> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
    );
  }
}

//歷史單據(jù)和我的頁面都是這樣的界赔,名稱改一下
import 'package:flutter/material.dart';

class Page4 extends StatefulWidget {
  @override
  _PageState createState() => _PageState();
}

class _PageState extends State<Page4> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('歷史單據(jù)'),
      ),
    );
  }
}
//裝車單頁面
import 'package:flutter/material.dart';

class Page3 extends StatefulWidget {
  @override
  _PageState createState() => _PageState();
}

class _PageState extends State<Page3> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: new Center(
        child: Column(
          children: <Widget>[
            PhysicalModel (
              color: Colors.blue,
              elevation: 6,//加陰影
              child: Container(
                padding: new EdgeInsets.only(top: 50,left: 40, right: 40, bottom: 19),
                child: Container(
                  height: 40.0,
                  padding: new EdgeInsets.only(left: 10),
                  decoration: new BoxDecoration(
                    color: Colors.blue[200],
                    borderRadius: new BorderRadius.circular(25.0),
                  ),
                  child: TextFormField(
                    style: new TextStyle(color: Colors.white70,fontSize: 14),//輸入文字顏色和大小
                    decoration: InputDecoration(
                      hintText: '請輸入訂單號搜索',//文字提示
                      hintStyle: new TextStyle(color: Colors.white70),//提示文字顏色
                      icon: Icon(Icons.search, color: Colors.white70),//圖標(biāo)
                      border: InputBorder.none,//去掉下劃線
                    ),
                  ),
                ),
              ),
            ),
            Container(
              padding: new EdgeInsets.only(top: 200),
              child: new Image.asset('images/order-empty.png'),
            ),
            new MaterialButton(
              onPressed: () {
                Navigator.pushNamed(context, '/page2');
              },
              child: Text('前往配送單'),
            )
          ],
        ),
      )
    );
  }
}

主頁:

import 'package:flutter/material.dart';

import './views/page1.dart';
import './views/page2.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(//為了繼承主題數(shù)據(jù),widget需要位于MaterialApp內(nèi)才能正常顯示牵触, 因此我們使用MaterialApp來運(yùn)行該應(yīng)用淮悼。
      title: 'title',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: '裝車單'),
      routes: <String, WidgetBuilder> {
        '/page2': (BuildContext context) => Page2(title: '配送單詳情'),//路由(title會傳給頁面使用)
      },
    );
  }
}

目前所有完成的代碼都在這里啦~你實(shí)現(xiàn)了嗎?還在探索階段
Container沒有陰影揽思,PhysicalModel沒有padding袜腥,結(jié)合起來用,話說那么麻煩嗎钉汗?誰有更好的辦法8睢!@芡濉L靥瘛!P炷啤癌刽!

下一篇繼續(xù),來看數(shù)據(jù)傳遞吧~(有時間就會更新尝丐,一起來完成一個完整的flutter app 吧)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末显拜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子爹袁,更是在濱河造成了極大的恐慌远荠,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件失息,死亡現(xiàn)場離奇詭異譬淳,居然都是意外死亡档址,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門邻梆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來守伸,“玉大人,你說我怎么就攤上這事浦妄∧崮。” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵剂娄,是天一觀的道長蠢涝。 經(jīng)常有香客問我,道長阅懦,這世上最難降的妖魔是什么和二? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮耳胎,結(jié)果婚禮上儿咱,老公的妹妹穿的比我還像新娘。我一直安慰自己场晶,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布怠缸。 她就那樣靜靜地躺著诗轻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪揭北。 梳的紋絲不亂的頭發(fā)上扳炬,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天,我揣著相機(jī)與錄音搔体,去河邊找鬼恨樟。 笑死,一個胖子當(dāng)著我的面吹牛疚俱,可吹牛的內(nèi)容都是我干的劝术。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼呆奕,長吁一口氣:“原來是場噩夢啊……” “哼养晋!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起梁钾,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤绳泉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后姆泻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體零酪,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡冒嫡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了四苇。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片孝凌。...
    茶點(diǎn)故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蛔琅,靈堂內(nèi)的尸體忽然破棺而出胎许,到底是詐尸還是另有隱情,我是刑警寧澤罗售,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布辜窑,位于F島的核電站,受9級特大地震影響寨躁,放射性物質(zhì)發(fā)生泄漏穆碎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一职恳、第九天 我趴在偏房一處隱蔽的房頂上張望所禀。 院中可真熱鬧,春花似錦放钦、人聲如沸色徘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽褂策。三九已至,卻和暖如春颓屑,著一層夾襖步出監(jiān)牢的瞬間斤寂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工揪惦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留遍搞,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓器腋,卻偏偏與公主長得像溪猿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子纫塌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評論 2 355

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