Flutter开发 项目实战01

Flutter简介

2018年2月27日,在2018世界移动大会上,Google 发布了Flutter的第一个Beta版本。Flutter是 Google 用以帮助开发者在iOS和Android两个平台开发高质量原生应用的全新移动UI框架,类似于React Native、Weex可以实现跨平台开发。

Flutter特点

热重载(Hot Reload)利用Android Studio直接一个Ctrl+S就可以保存并重载,模拟器立马就可以看见效果,这一效果其实有点类似Android Studio的Instant Run借助可移植的GPU加速的渲染引擎以及高性能本地代码运行时以达到跨平台设备的高质量用户体验可扩展性很强:Flutter框架本身提供了丰富的Material Design和Cupertino(iOS-flavor)风格的控件,可自由扩展控件不受手机平台控件的限制

Flutter入门

做为一个iOS开发者个人认为Flutter更适合学习,因为其入门较快,相对Weex、React-Native更快入门,因为后者两个对前端知识要求较高,而我一个iOS开发者有点懵逼。环境搭建:Flutter环境搭建 根据命令行拉个文件到本机 再进行命令安装配置啥的,跟着一步步走即可。开发工具:我使用的Android Studio 非常方便,当然你也可以用VSCode 附图

image

Android Studio很Nice,但是我的小Mac Air有点受不了,每次一运行只能关掉其他应用滚烫的电脑。所以你可以选择VSCode,相对消耗较低。完美运行。

如何构建一个App

image

根据提示填入AppName,存储地儿及包名。了解一下Flutter的入口,iOS的话即为Appdelegate.m文件中,切换RootViewController即可,在这里也可以同样理解,main.dart相当于Appdelegate.m,也可以写一个RootViewController,相当于这里的RootIndex

image

RootIndex实现跟iOS差不多的思想,包含其他几个页面头文件,然后设置一下即可,就可以实现最基本的一个App了,然后接着就是实现UI即可。

image

到此,一个空的App已经可以运行了。


关于UI搭建

在iOS中很简单粗暴,直接设置控件的绝对位置,x,y的位置,宽高。还可以利用其他第三方库类似Mansoy来进行自适应的布局,也非常方便。但是在Flutter并不是这样。首先贴个布局的链接Flutter布局。咱们先看个简单的布局,在iOS里新建个UITableViewCell,咔咔的几下就写完了,但是在Flutter可能需要换种思路去实现了

image

首先要确认布局的方向,Column从上到下的布局,Row从左到右的布局,Container相当于iOS的类似UIView的控件,可以往里加子控件,例如输入框,文本,图片等。右边的代码为实现的结构。其中margin就是设置上下左右相对父控件的位置的。

Fluuter-TabBar

在iOS中控件中并没有这个,需要自己实现。iOS有第三方库类似TopTabBar

image

在AppBar中实现,在导航栏底部。


appBar:new AppBar(
title:new Text('关注', style:new TextStyle(fontSize:17.0, color: Colors.black),),
centerTitle:false,
backgroundColor: Colors.white,
actions: [
new Row(
children: [
new Container(
child:new FlatButton(onPressed: (){}, child:new Icon(Icons.people)),
width:44.0,
),
new Container(
child:new FlatButton(onPressed: (){}, child:new Icon(Icons.search)),
width:64.0,
),
],
)
],
bottom:new TabBar(
tabs:myTabs,
unselectedLabelColor: Colors.grey,
labelColor: Colors.white,
indicatorSize: TabBarIndicatorSize.tab,
//              indicatorWeight: 15.0,
             indicator:new ShapeDecoration(
color: Colors.orange,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.all(
Radius.circular(0.0),
),
),
),
controller:_tabController,
isScrollable:true,
),
)


实现视图

body:new TabBarView(
controller:_tabController,
children:myTabs.map((Tab tab) {
if(tab.text =="全部关注"){
return new Container(
child:new ListView.builder(
itemCount:likeLists.length,
itemBuilder: buildCellItem,
),
);
}else if(tab.text =="简友圈"){
return new Center(child:new Text(tab.text));
}else if(tab.text =="专题"){
return new Center(child:new Text(tab.text));
}else if(tab.text =="作者"){
return new Center(child:new Text(tab.text));
}else if(tab.text =="连载"){
return new Center(child:new Text(tab.text));
}else if(tab.text =="文集"){
return new Center(child:new Text(tab.text));
}
return new Center(child:new Text(tab.text));
}).toList(),
),

这里实现的一个ListView。

最后附上Github上的Demo的地址:Demo传送门
再推荐两个网站
Flutter中文网
Flutter社区中文资源
如有不正确的地方帮忙指出,谢谢。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,519评论 25 707
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,693评论 2 59
  • 从16号移植完鲜胚到今天是第八天。整整8天没有出门,这是有史以来在家宅的最长的一次,并且还宅的心安理得,因为自己是...
    木又sun阅读 153评论 0 0
  • 风在摇树的叶子,我在想你的样子。 ——题记 每...
    如此青梨阅读 579评论 0 3
  • sqlite数据库在Python中的使用简介 1. sqlite3介绍 SQLite数据库是一款非常小巧的嵌入式开...
    SmartGangZ阅读 1,406评论 0 1