Flutter 出来已经有些日子了,愈来愈多的开发者也开始尝试使用 Flutter 进行开发,Flutter 是谷歌的移动UI框架,基于 Dart 语言,支持多端开发(Android、iOS、Web),听到这里是否是想要跃跃欲试了,因为LZ也正在踩坑的路上,因此有写的不对的地方还请多多指教。java
任何一门语言,官网都是最好的学习渠道,虽说大多数都是英文的,但如今谷歌已经有不少都支持中文版本了:git
Flutter中文官网:https://flutterchina.club/github
安装直接按照官网的来就好了,最主要的就是配置一下环境变量,下载下来的 flutter 包你能够理解为 java 中的 jar 包,开发的时候须要导入的。面试
咱们都知道,在 Android 中页面是由不少个View来构成的,在 Flutter 中,Widget 用来构成页面上的内容,可是和 View 不一样的是,Widget 是不可变的,有些人可能就有疑问了,不可变那岂不是静态页面,非也非也,那确定有其余办法的咯,接着往下看:编程
1.一、不可变状态的小部件StatelessWidgetjson
你能够将 StatelessWidget 理解成 Android 中的 ViewGroup,这是一个无状态的小部件,什么意思呢,就是当你的页面部分不依赖于对象配置信息外的其余任何内容时,简而言之就是你的页面是静态页面时,就可使用它。网络
1.二、可变状态的小部件StatefulWidget架构
和 StatelessWidget 同样能够理解为 ViewGroup,可是它是有状态的,这个状态相似于 Activity 的生命周期,当你的页面须要动态的改变时,你就须要使用它。app
注意框架
若是一个 Widget 发生了变化(用户与之交互),那么它就是有状态的;若是一个子 Widget 是有状态的,那么包裹它的父 Widget 能够是有状态的也能够是无状态的,简而言之,StatelessWidget 中能够包含 StatefulWidget,而 StatefulWidget 中也能够包含 StatelessWidget。
除了页面以外,其余的确定都没有,由于毕竟是跨端开发的框架,不是专门为 Android 而设计的,可能有些人要问了,那若是想实现 Android 中的一些特殊的功能岂不是作不了了,非也非也,这个就属于另一个知识了,卖个关子先,接着往下看;Activity 和 Fragment 在 Flutter 中都变成了 Widget。
3.一、资源图片
在Android中资源图片有不少种分辨率,Flutter 遵循像iOS这样简单的3种分辨率格式: 1x, 2x, and 3x,在根目录下建立一个 images 的文件夹,而后再在 images 文件夹中建立三个文件夹用来存放不一样分辨率的图片:
而后,你须要在 pubspec.yaml 中配置这些图片,这个文件至关于Android中的gradle文件。
3.二、字符串
在 Flutter 中,目前最好的作法就是新建一个类,用来声明你所须要的字符串
1声明: 2class Strings{ 3 static String welcomeMessage = "Welcome To Flutter"; 4} 5 6使用: 7new Text(Strings.welcomeMessage);
在 Flutter 中,StatelessWidget 是没有生命周期的,只有 StatefulWidget 才有,咱们通常经过挂接到WidgetsBinding观察并监听didChangeAppLifecycleState更改事件来监听生命周期事件,有如下这些生命周期:
Dart是单线程执行模型,支持Isolates(在另外一个线程上运行Dart代码的方式)、事件循环和异步编程。 除非您启动一个Isolate,不然您的Dart代码将在主UI线程中运行,并由事件循环驱动。
当你进行网络请求时,能够在UI线程直接运行网络请求代码:
1loadData() async { 2 String dataURL = "https://jsonplaceholder.typicode.com/posts"; 3 http.Response response = await http.get(dataURL); 4 setState(() { 5 widgets = JSON.decode(response.body); 6 }); 7}
这里使用了 async/await 语法来调用API,你能够理解为,使用 async 以后这个方法就变成了异步的方法,而后须要等待(await)网络请求完成以后再执行下面更新语句;在 StatefulWidget 中,咱们使用 setState 方法来更新UI操做,这会从新执行build 方法。
在 Flutter 中,有不少组件,他们能够构建成页面,由于组件繁多,因此这里我就不一一介绍了,我会在接下来的博客中为你们详细介绍 Flutter 中各类组件的使用,也欢迎你们持续关注我。
提醒一下你们,若是开发过程当中有大的修改时,仍是不要相信 Flutter 的热重载,在看到运行状况与实际不符时,卸载重装再来一遍。最后的最后,上一张花了一天半时间入门的Demo:
Flutter解析Demo:https://github.com/24Kshign/F...
在这我也分享一份本身收录整理的 Android学习PDF+架构视频+面试文档+源码笔记 ,还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料这些都是我闲暇还会反复翻阅的精品资料
总之也是在这里帮助你们学习提高进阶,也节省你们在网上搜索资料的时间来学习,也能够分享给身边好友一块儿学习
若是你有须要的话,能够点赞+评论,关注我, 加Vx:15388039515(备注思否,须要资料)