没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论















1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
1.10
1.11
1.12
1.13
1.14
1.15
1.16
1.16.1
1.16.2
TableofContents
前⾔
⼀、Dart语⾔和Flutter基础
⼆、快速开发实战篇
三、打包与填坑篇
四、Redux、主题、国际化
五、深⼊探索
六、深⼊Widget原理
七、深⼊布局原理
⼋、实⽤技巧与填坑
九、深⼊绘制原理
⼗、深⼊图⽚加载流程
⼗⼀、全⾯深⼊理解Stream
⼗⼆、全⾯深⼊理解状态管理设计
⼗三、全⾯深⼊触摸和滑动原理
⼗四、混合开发打包Android篇
番外
Flutter⾯试知识点集锦
Flutter开发实战与前景展望-RTCDevMeetup
1

前⾔
在如今的Fultter⼤潮下,本系列是让你看完会安⼼的⽂章。
本系列将完整讲述:如何快速从0开发⼀个完整的FlutterAPP,配套⾼完成度Flutter开源项⽬
GSYGithubAppFlutter,同时也会提供⼀些Flutter的开发细节技巧,并针对开发过程中可能遇到的问题
进⾏填坑,之后深⼊源码和实战为你全⾯解析Flutter。
笔者相继开发过Flutter、ReactNative、Weex等主流跨平台框架项⽬,其中Flutter的跨平台兼
容性⽆疑最好。前期开发调试完全在Android端进⾏的情况下,第⼀次在IOS平台运⾏居然没有
任何错误,并且还没出现UI兼容问题,相信对于经历过跨平台开发的猿们⽽⾔,这是多么的不可
思议画⾯。并且Fluuter的HotLoad相⽐较其他两个平台,也是丝滑的让⼈⽆法相信。吹爆了!
这些特点其实这得益于FlutterEngine和Skia,如果有兴趣的可以看看笔者之前的《移动端跨平
台开发的深度解析》。
好了,感慨那么多,让我们进⼊正题吧。
⼀、基础篇
本篇主要涉及:环境搭建、Dart语⾔、Flutter的基础。
1、环境搭建
Flutter的环境搭建⼗分省⼼,特别对应Android开发者⽽⾔,只是在AndroidStuido上安装插件,并
下载flutterSdk到本地,配置在环境变量即可,其实中⽂⽹的搭建Futter开发环境已经很贴⼼详细,从
平台指引开始安装基本都不会遇到问题。
这⾥主要是需要注意,因为某些不可抗⼒的原因,国内的⽤户有时候需要配置Flutter的代理,并且国
内⽤户在搜索Flutter第三⽅包时,也是在https://pub.flutter-io.cn内查找,下⽅是需要配置到环境变
量的地址。(psAndroidStudio下运⾏IOS也是蛮有意思的(◐‿◑))
///win直接配置到环境编辑即可,mac配置到bash_profile
exportPUB_HOSTED_URL=https://pub.flutter-io.cn//国内⽤户需要设置
exportFLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn//国内⽤户需要设置
2、Dart语⾔下的Flutter
在跨平台开领域被JS⼀统天下的今天,Dart语⾔的出现⽆疑是⼀股清流。作为后来者,Dart语⾔有着
不少Java、kotlin和JS的影⼦,所以对于Android原⽣开发者、前端开发者⽽⾔⽆疑是⾮常友好的。
官⽅也提供了包括IOS、ReactNative等开发者迁移到Flutter上的⽂档,所以请不要担⼼,Dart语⾔
不会是你掌握Flutter的⻔槛,甚⾄作为开发者,就算你不懂Dart也可以看着代码摸索。
Comeon,下⾯主要通过对⽐,简单讲述下Dart的⼀些特性,主要涉及的是Flutter下使⽤。
⼀、Dart语⾔和Flutter基础
3

2.1、基本类型
var可以定义变量,如 vartag="666",这和JS、Kotlin等语⾔类似,同时Dart也算半个
动态类型语⾔,同时⽀持闭包。
Dart属于是强类型语⾔,但可以⽤ var来声明变量,Dart会⾃推导出数据类型,var
实际上是编译期的“语法糖”。dynamic表示动态类型,被编译后,实际是⼀个 object类型,
在编译期间不进⾏任何的类型检查,⽽是在运⾏期进⾏类型检查。
Dart中number类型分为 int和 double,其中java中的long对应的也是Dart中的int类
型。Dart中没有float类型。
Dart下只有bool型可以⽤于if等判断,不同于JS这种使⽤⽅式是不合法的 varg="null";
if(g){}。
DART中,switch⽀持String类型。
2.2、变量
Dart不需要给变量设置 settergetter⽅法,这和kotlin等类似。Dart中所有的基础类型、类
等都继承Object,默认值是NULL,⾃带getter和setter,⽽如果是final或者const的话,那
么它只有⼀个getter⽅法。
Dart中final和const表示常量,⽐如 finalname='GSY';constvalue=1000000;同时
staticconst组合代表了静态常量。其中const的值在编译期确定,final的值要到运⾏时才确
定。(psFlutter在Release下是AOT模式。)
Dart下的数值,在作为字符串使⽤时,是需要显式指定的。⽐如:inti=0;print("aaaa"+
i);这样并不⽀持,需要 print("aaaa"+i.toString());这样使⽤。这和Java与JS存在
差异。所以在使⽤动态类型时,需要注意不要把number类型当做String使⽤。
DART中数组等于列表,所以 varlist=[];和 Listlist=newList()可以简单看做⼀
样。
2.3、⽅法
Dart下 ??、 ??=属于操作符,如: AA??"999"表示如果AA为空,返回999;AA??=
"999"表示如果AA为空,给AA设置成999。
Dart⽅法可以设置参数默认值和指定名称。⽐如: getDetail(StinguserName,reposName,
{branch="master"}){}⽅法,这⾥branch不设置的话,默认是“master”。参数类型可以指
定或者不指定。调⽤效果: getRepositoryDetailDao(“aaa","bbbb",branch:"dev");
Dart不像Java,没有关键词public、private等修饰符,_下横向直接代表private,但是有
@protected注解。
Dart中多构造函数,可以通过如下代码实现的。默认构造⽅法只能有⼀个,⽽通
过Model.empty()⽅法可以创建⼀个空参数的类,其实⽅法名称随你喜欢。⽽变量初始化值
时,只需要通过 this.name在构造⽅法中指定即可:
⼀、Dart语⾔和Flutter基础
4

classModelA{
Stringname;
Stringtag;
//默认构造⽅法,赋值给name和tag
ModelA(this.name,this.tag);
//返回⼀个空的ModelA
ModelA.empty();
//返回⼀个设置了name的ModelA
ModelA.forName(this.name);
}
2.4、Flutter
Flutter中⽀持 async/ await。这⼀点和ES7很像,如下代码所示,只是定义的位置不同。同时异
步操作也和ES6中的Promise很像,只是Flutter中返回的是 Future对象,通过 then可以执
⾏下⼀步。如果返回的还是 Future便可以 then().then.()的流式操作了。
///模拟等待两秒,返回OK
request()async{
awaitFuture.delayed(Duration(seconds:1));
return"ok!";
}
///得到"ok!"后,将"ok!"修改为"okfromrequest"
doSomeThing()async{
Stringdata=awaitrequest();
data="okfromrequest";
returndata;
}
///打印结果
renderSome(){
doSomeThing().then((value){
print(value);
///输出okfromrequest
});
}
Flutter中 setState很有ReactNative的既视感,Flutter中也是通过state跨帧实现管理数据
状态的,这个后⾯会详细讲到。
Flutter中⼀切皆Widget呈现,通过 build⽅法返回Widget,这也是和ReactNative中,通过
render函数返回需要渲染的component⼀样的模式。
Stream对应的async*/yield也可以⽤于异步,这个后⾯会说到。
⼀、Dart语⾔和Flutter基础
5

3、FlutterWidget
在Flutter中,⼀切的显示都是Widget。Widget是⼀切的基础,作为响应式的渲染,类似MVVM的
实现机制。
我们可以通过修改数据,再⽤setState设置数据,Flutter会⾃动通过绑定的数据更新Widget。所
以你需要做的就是实现Widget界⾯,并且和数据绑定起来。
Widget分为有状态和⽆状态两种,在Flutter中每个⻚⾯都是⼀帧,⽆状态就是保持在那⼀帧,⽽
有状态的Widget当数据更新时,其实是绘制了新的Widget,只是State实现了跨帧的数据同步保
存。
这⾥有个⼩Tip,当代码框⾥输⼊ stl的时候,可以⾃动弹出创建⽆状态控件的模板选项,⽽
输⼊ stf的时,就会弹出创建有状态Widget的模板选项。
代码格式化的时候,括号内外的逗号都会影响格式化时换⾏的位置。
如果觉得默认换⾏的线太短,可以在设置-Editor-CodeStyle-Dart-WrappingandBraces-Hard
wrapat设置你接受的数值。
3.1、⽆状态StatelessWidget
直接进⼊主题,下⽅代码是⽆状态Widget的简单实现。
继承StatelessWidget,通过 build⽅法返回⼀个布局好的控件。可能现在你还对Flutter的内置控
件不熟悉,butDon'tworry,takeiseasy,后⾯我们就会详细介绍。这⾥你只需要知道,⼀个⽆状
态的Widget就是这么简单。
Widget和Widget之间通过 child:进⾏嵌套。其中有的Widget只能有⼀个child,⽐如下⽅的
Container;有的Widget可以多个child,也就是 children:,⽐如`Column布局。下⽅代码便
是ContainerWidget嵌套了TextWidget。
import'package:flutter/material.dart';
classDEMOWidgetextendsStatelessWidget{
finalStringtext;
//数据可以通过构造⽅法传递进来
DEMOWidget(this.text);
@override
Widgetbuild(BuildContextcontext){
//这⾥返回你需要的控件
//这⾥末尾有没有的逗号,对于格式化代码⽽已是不⼀样的。
returnContainer(
//⽩⾊背景
color:Colors.white,
⼀、Dart语⾔和Flutter基础
6
剩余191页未读,继续阅读
资源评论

- thebestuzi2023-07-24最让我喜欢的是,《Flutter完整开发实战详解 PDF》除了讲解基础的Flutter开发知识外,还深入探讨了一些实战中常遇到的问题,并给出了解决方案,真是非常实用!
- 图像车间2023-07-24值得一提的是,《Flutter完整开发实战详解 PDF》并没有过多的废话,每一章节都明确而紧凑地介绍了相关知识点,让人读起来心无旁骛。
- 莉雯Liwen2023-07-24作为一个有点技术基础的开发者,我觉得这本《Flutter完整开发实战详解 PDF》提供了很多实用的示例和案例,让我受益匪浅。
- 赵伊辰2023-07-24我刚开始学Flutter不久,但通过阅读这本PDF,觉得作者真是用心写的,把复杂的概念讲解得简明易懂。
- 士多霹雳酱2023-07-24这本《Flutter完整开发实战详解 PDF》真是难得的好资源,对于想要系统学习Flutter的人来说简直是宝藏啊!

like969570377
- 粉丝: 1
- 资源: 37
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


安全验证
文档复制为VIP权益,开通VIP直接复制
