一分钟带你了解Flutter

前言

作为2018世界移动大会的内容之一,Google发布了Flutter的第一个 beta 版本。Flutter 是 Google 用以帮助开发者在 iOS 和 Android 两个平台开发高质量的原生应用的全新移动 UI 框架。现在就可以去 flutter.io快速上手开发精美的原生应用。

二、首先我们要理解什么是跨平台。

什么是跨平台?如果你是移动开发者的话,应该知道 Android 是使用 Java\Kotlin 语言来开发而 iOS 则是 OC\Swift来开发。各大科技圈大佬们都在绞尽脑汁的想统一这两个平台,无论 Android 还是 iOS 都是移动端,若能统一用一套语言开发应用那最好不过的。这也正是跨平台的意思,简单的说就是你写的同一套代码可以运行在不同的平台。不仅能够大大加快开发的进度,同时也能减少人力成本的投入。

Flutter就是在这种理念中诞生出的跨平台框架。

Flutter 的目标是解决移动开发中的两个重要问题

  1. 实现原生应用的性能和与平台的集成
  2. 提供一个多平台,可移植的 UI 工具包来支持高效的应用开发。
Flutter与ReactNative的区别?

一个是 Facebook 推出两年多的 ReactNative ,另一个则是 Google 这种顶级科技公司的产品Flutter。那么它们有什么区别呢?

看过ReactNative源码的朋友都应该知道,RN中的组件都继承自Native View组件。例如:ReactNative 中的 ListView 在 Android 中就是继承自 ListView ,还有 RecycleView。

而Flutter则不同,它的所有 UI 组件都是一帧一帧画出来的。这样能够很准确并且很灵活的做出你想要的 UI 。

Flutter 使用 Dart语言开发而 ReactNative 则使用 JS 结合 XML 来开发的。

估计说道Dart语言,很多朋友都不知道。其实,我也是刚刚知道。。。

下面就说道说道Dart语言。

基于Dart语言开发的Flutter框架

dart语言是由谷歌公司开发的网络编程语言,于2011年10月10日发布。谷歌2010年内部备忘录显示,Dart的目标就是要代替JavaScript网络开发通用语言的地位。

然而,那么多年过去了。。。今天却以这种方式出现

先来看段代码

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new Text(widget.title),
      ),
      body: new Center(
        child: new Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            new Text(
              'You have pushed the button this many times:',
            ),
            new Text(
              '$_counter',
              style: Theme.of(context).textTheme.display1,
            ),
            new Image.network(
              'https://raw.githubusercontent.com/flutter/website/master/_includes/code/layout/lakes/images/lake.jpg',
            )
          ],
        ),
      ),
      persistentFooterButtons: <Widget>[new FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: new Icon(Icons.add),
      ) ]
      ,
      floatingActionButton: new FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: new Icon(Icons.add),
      ), // This trailing comma makes auto-formatting nicer for build methods.

    );
  }
}

是不是还在各种括号和嵌套中魂牵梦绕呢?

直观感受就是没有RN写起来那么简洁明了。

在知乎上看到的一个真实的段子

为什么Flutter 用 Dart 开发在会后,我也主动的去找 Flutter 的开发专家 Divod 聊了会。我问到他一个问题,我说为什么你们会选择用 Dart 语言来开发而不选择用XML 和 JS ,从刚才您的代码示例上我的第一感觉就是没有 ReactNative 的可读性高。大家也许觉得我太大胆,在 Google 的场子提 Facebook 的东西。但技术毕竟是技术,程序员何苦为难程序员,这是一场技术的交流。最后,他也给了我一个满意和无力反驳的答案,“因为 Dart 的开发团队就在他们旁边,他们能给到我们很快的支持。我们能很快沟通到”。所以我也就默认了 Flutter 注定会一直使用 Dart 这门语言。

三、 Flutter的优点

  1. 跨平台的优点不必多说
  2. Flutter默认Meteria UI,开发起来贼溜
  3. hot reload的开发模式非常方便,基本上做到实时查看改变的UI
  4. 将来发布的 Fuchsia OS 就钦定了 Flutter 作为 UI Toolkit
  5. 从性能上来讲,Flutter是加分的。

四、 Flutter的缺点

  1. 使用Dart开发容易造火箭🚀
  2. 目前处于beta版本,商业化的话还需要再等等。。。鬼知道什么时候
  3. 对于IOS UIKit来说,Flutter Meterial Design还不能取代之,只能作为一种补充。
  4. 在Android 平台上,一个架构的SO居然要7M左右,简直不能忍。

对于Flutter我还是持乐观态度的,但是就看Google努力否了。如果能像Tensorflow或者Golang那样流行就好了。想玩的童鞋可以持续关注Flutter的动向,如果想要运用到商业项目上还是等等吧。

本文转自 https://www.jianshu.com/p/1f05b604f43e,如有侵权,请联系删除。

有需要更多完整学习资料的,可以扫描下方二维码领取资料!

Flutter技术解析与实战,全家桶学习资料(含Flutter进阶学习笔记、入门与实战和完整开发实战详解)

Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。

在这里为了方便大家系统的学习Flutter,这里特意联合了阿里P7架构师和谷歌技术团队共同整理了一份Flutter全家桶学习资料。

内容概要:Flutter技术解析与实战、Flutter进阶学习笔记、Flutter入门与实战和Flutter完整开发实战详解。

内容特点:条理清晰,含图像化表示更加易懂。

由于文章内容比较多,篇幅有限,资料已经被整理成了PDF文档,有需要 Flutter技术解析与实战 完整文档的可扫描下方卡片免费获取!

《Flutter技术解析与实战》

目录

img

第一章 混合工程

​ ● Flutter工程体系

​ ● 混合工程改造实战

​ ● 混合工程与持续集成

​ ● 快速完成混合工程搭建

​ ● 使用混合栈框架开发

img

第二章 能力增强

​ ● 基于原生能力的插件扩展

​ ● 基于外接纹理的同层渲染

​ ● 多媒体能力扩展实践

​ ● 富文本能力应用实践

img

第三章 业务架构设计

​ ● 应用框架设计实践

​ ● 轻量级动态化渲染引擎的设计

​ ● 面向切面编程的设计实践

​ ● 高性能的动态模板渲染实践

img

第四章 数据统计与性能

​ ● 数据统计框架的设计

​ ● 性能稳定性监控方案的设计

​ ● 高可用框架的设计与实践

​ ● 跨端方案性能对比实践

img

第五章 企业级应用实战

​ ● 基于Flutter的端结构演进与创新

​ ● Flutter与FaaS云端一体化架构

img

由于文章内容比较多,篇幅有限,资料已经被整理成了PDF文档,有需要 Flutter技术解析与实战 完整文档的可扫描下方卡片免费获取!

《Flutter进阶学习笔记》

目录

img

img

第一章 为什么 Flutter 是跨平台开发的终极之选

​ ● 这是为什么?

​ ● 跨平台开发

​ ● 什么是Flutter

​ ● Flutter特性

​ ● Flutter 构建应用的工具

​ ● 使用 Flutter 构建的热门应用

​ ● 构建 Flutter 应用的成本

img

第二章 在Windows上搭建Flutter开发环境

​ ● 使用镜像

​ ● 系统要求

​ ● 获取Flutter SDK

​ ● 编辑器设置

​ ● Android设置

​ ● 起步: 配置编辑器

​ ● 起步: 体验

​ ● 体验热重载

img

第三章 编写您的第一个 Flutter App

​ ● 创建 Flutter app

​ ● 使用外部包(package)

​ ● 添加一个 有状态的部件(Stateful widget)

​ ● 创建一个无限滚动ListView

​ ● 添加交互

​ ● 导航到新页面

​ ● 使用主题更改UI

img

第四章 Flutter开发环境搭建和调试

​ ● 开发环境的搭建

​ ● 模拟器的安装与调试

​ ● 开发环境的搭建

​ ● 模拟器的安装与调试

img

第五章 Dart语法篇之基础语法(一)

​ ● 简述

​ ● Hello Dart

​ ● 数据类型

​ ● 变量和常量

​ ● 集合(List、Set、Map)

​ ● 流程控制

​ ● 运算符

​ ● 异常

​ ● 函数

​ ● 总结

img

第六章 Dart语法篇之集合的使用与源码解析(二)

​ ● List

​ ● Set

​ ● Map

​ ● Queue

​ ● LinkedList

​ ● HashMap

​ ● Map、HashMap、LinkedHashMap、SplayTreeMap区别

​ ● 命名构造函数from和of的区别以及使用建议

img

第七章 Dart语法篇之集合操作符函数与源码分析(三)

​ ● 简述

​ ● Iterable

​ ● forEach

​ ● map

​ ● any

​ ● every

​ ● where

​ ● firstWhere和singleWhere和lastWhere

​ ● join

​ ● take

​ ● takeWhile

​ ● skip

​ ● skipWhile

​ ● follwedBy

​ ● expand

​ ● reduce

​ ● elementAt

img

第八章 Dart语法篇之函数的使用(四)

​ ● 简述

​ ● 函数参数

​ ● 匿名函数(闭包,lambda)

​ ● 箭头函数

​ ● 局部函数

​ ● 顶层函数和静态函数

​ ● main函数

​ ● Function函数对象

img

第九章 Dart语法篇之面向对象基础(五)

​ ● 简述

​ ● 属性访问器(accessor)函数setter和getter

​ ● 面向对象中的变量

​ ● 构造函数

​ ● 抽象方法、抽象类和接口

​ ● 类函数

​ ● 总结

img

第十章 Dart语法篇之面向对象继承和Mixins(六**)**

​ ● 简述

​ ● 类的单继承

​ ● 基于Mixins的多继承

​ ● 总结

img

第十一章 Dart语法篇之类型系统与泛型(七)

​ ● 简述

​ ● 可选类型

​ ● 接口类型

​ ● 泛型

​ ● 类型具体化

​ ● 总结

img

第十二章 Flutter中的widget

​ ● Flutter页面-基础Widget

​ ● Widget

​ ● StatelessWidget

​ ● State生命周期

​ ● 基础widget

​ ● DefaultTextStyle

​ ● FlutterLogo

​ ● Icon

​ ● Iamge.asset

​ ● CircleAvatar

​ ● FadeInImage

​ ● 按钮

​ ● FlatButton

​ ● OutlineButton

​ ● TextFormField

img

由于文章内容比较多,篇幅有限,资料已经被整理成了PDF文档,有需要 Flutter技术解析与实战 完整文档的可扫描下方卡片免费获取!

《Flutter入门与实战》

目录

img

img

img

img

第一章、Flutter基本功能

​ ● 我的第一个 Flutter 应用之旅

​ ● 容器的盒子模型

​ ● 构建一个常用的页面框架

​ ● 设置 App 的主色调与字体

​ ● 来一个图文并茂的列表

​ ● 给列表增加下拉刷新和上滑加载更多功能

​ ● 使用cached_network_image 优化图片加载体验

​ ● 仿一个微信价值几个亿的页面

​ ● 开发一个常用的登录页面

​ ● 封装一个通用的文本输入框

​ ● 底部弹窗ModelBottomSheet详解

​ ● 利用CustomScrollView实现更有趣的滑动效果

​ ● 底部弹窗如何实现多项选择?

img

第二章、Flutter路由管理

​ ● App页面路由及路由拦截实现

​ ● 路由参数处理

​ ● 初识 fluro 路由管理

​ ● 使用 fluro 的转场动画提高页面切换体验

​ ● 使用自定义转场动画实现个性化页面切换

​ ● 此路是我开,此树是我栽。若是没权限,403到来

​ ● Flutter 2.0的路由把我搞蒙了

​ ● 山路十八弯的2.0路由

img

第三章、Flutter网络请求插件Dio

​ ● 初次见面,网络请求王者之dio

​ ● 利用 Dio请求删除数据

​ ● 使用 Dio的 Patch请求完成详情编辑

​ ● 使用 Post 请求增加动态

​ ● 一文搞定图片选择及图片上传

​ ● 使用 GetIt 同步不同页面间数据

​ ● Dio 封装之金屋藏娇

​ ● Dio 之拦截器

​ ● Dio之戛然而止

​ ● 从源码深入了解Dio 的

​ ● 小伙子,你买票了吗?

​ ● 手写一个持久化的

​ ● Dio之文件下载

​ ● Dio 篇章总结

img

第四章、Flutter状态管理

​ ● 基础原理篇

​ ● Provider篇

​ ● Redux篇

​ ● Mobx篇

​ ● Getx篇

​ ● BLOC篇

​ ● 状态管理系列大汇总

img

第五章、Flutter 动画

​ ● 使用 Animation 构建爱心三连动画

​ ● 让你的组件拥有三维动效

​ ● 小姐姐渐现效果 ——AnimatedOpacity 使用

​ ● 使用 AnimatedBuilder分离组件和动画,实现动效复用

​ ● 看这一颗跳动的热心—— AnimatedPadding 应用

​ ● 使用AnimatedSwitcher 做场景切换

​ ● 给小姐姐的照片调个颜色滤镜

img

由于文章内容比较多,篇幅有限,资料已经被整理成了PDF文档,有需要 Flutter技术解析与实战 完整文档的可扫描下方卡片免费获取!

# 《Flutter完整开发实战详解》

目录

img

第一章 Dart语言和Flutter基础

img

第二章 快速开发实战篇

img

第三章 打包与填坑篇

img

第四章 Redux、主题、国际化

img

第五章 深入探索

img

第六章 深入Widget原理

img

第七章 深入布局原理

img

第八章 实用技巧与填坑

img

第九章 深入绘制原理

img

第十章 深入图片加载流程

img

第十一章 全面深入理解Stream

img

第十二章 全面深入理解状态管理设计

img

第十三章 全面深入触摸和滑动原理

img

第十四章 混合开发打包 Android 篇

l Flutter 面试知识点集锦

l Flutter 开发实战与前景展望 - RTC Dev Meetup

img

由于文章内容比较多,篇幅有限,资料已经被整理成了PDF文档,有需要 Flutter技术解析与实战 完整文档的可扫描下方卡片免费获取!

**更有更多资料,加微信免费领取**

img

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值