初识flutter
初识flutter
flutter是Google开发的一套全新的跨平台开源框架。目前flutter已经发布很多很多版本,正在逐步的完善,它的目标其实是和react native一样的,就是同一份代码可以同时运行在Android和iOS两个系统上。如果你同时有react native和flutter开发经验,你就会发现flutter的很多设计理念和react native是一样的,react native基于组件开发页面,flutter则是widget,他们都有自己的生命周期,他们都是自己的属性或者状态,所以对于react native开发者来说,flutter开发只不过换了一种Dart语言,换了一批API,当然这些都是表面的理解。因为react native和flutter有本质的不同,react native渲染的是系统原生控件,flutter则是从头到尾重写了一套UI框架,渲染引擎则依靠Skia图形库实现。下面就具体说一下H5、react native、flutter这些跨平台UI框架的方案。
H5、react native、flutter
最开始的跨平台开发的方案就是H5开发,然后基于Android和iOS的webView完全继承web开发的所有成果,但是由于webview的渲染效率和js的执行性能问题,很难与原生相提并论。然后就到了react native、weex的时代,为了解决webview性能差的问题,这类框架将最终的渲染工作交还给了系统,抛开react native和weex自身对系统版本的bug,性能问题依然没有完美的解决,比如加载react native生成的bundle.js的size过大、bundle.js的加载时间过长导致白屏、页面内手势滑动导致大量的丢帧问题等等,所以我们在适用reactnative时还是需要大量的优化和维护。这个时候flutter借鉴react native孕育而生,为什么是借鉴呢,上面也有提到,其实react native在开发时有很多思想都是相同的。
flutter所使用的语言是Dart,这种语言既支持动态编译又支持静态编译,这也就意味着在JIT模式下我们可以实现热刷新,就像开发js一样,编辑完代码之后,只要保存或者点击 Hot Reload按钮,就可以立即更新到设备上,不用重新编译app。在Flutter中,所有功能都可以通过组合多个Widget来实现,包括对齐方式、按行排列、按列排列、网格排列甚至事件处理等等。Flutter控件主要分为两大类,StatelessWidget和StatefulWidget,StatelessWidget用来展示静态的文本或者图片,如果控件需要根据外部数据或者用户操作来改变的话,就需要使用StatefulWidget。State的概念也是来源于Facebook的流行Web框架React,React风格的框架中使用控件树和各自的状态来构建界面,当某个控件的状态发生变化时由框架负责对比前后状态差异并且采取最小代价来更新渲染结果。
欢迎加入Android开发技术交流QQ群:653583088,本群可免费获取Gradle、RxJava、小程序、Hybrid、移动架构、NDK、React Native、性能优化等技术教程!
flutter应用
flutter的安装很简单,我们只需要一个flutter的sdk就可以,这里类似于Android里的sdk,开发flutter的编辑器也有很多选择,Android studio、intellij、VS code,这里我选择的是最轻量的vs code。关于这些配置环境我们可以参考官网,说的很清晰。
当我们用VS code生成一个项目后,项目目录如下:
其中lib文件夹下的main.dart文件就是我们要开发的dart文件,pubspec.yaml就是项目的配置文件,ios文件夹和android文件夹分别是iOS和Android两个项目工程
然后我们看一下dart文件:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
[p]class MyApp extends StatelessWidget {[url=mailto:br/>@override@override@override@override- Flutter 初识--flutter doctor:Connected devices--!No devices available
- 初识Flutter
- Bing Maps进阶系列一:初识Bing Maps地图服务
- [C语言]指针初识
- 初识android——Handler
- 初识Delphi【原创+转载】
- 初识Git
- 初识Spring security-添加security
- 初识Symbian 下的Front End Processor
- 初识JAVA4(抽象类、接口、多态)
- 初识JSP之JSP内置对象,JSP三大指令,EL内置对象
- 初识smarty填充数据库数据
- Lua语言初识
- 初识zookeeper(1)之zookeeper的安装及配置
- 初识Centos5,终于把显卡驱动弄好了
- Android属性动画完全解析(上),初识属性动画的基本用法
- 初识工厂三姐妹
- Game Programming with DirectX -- 01[初识Direct3D]
- 初识ASP.NET Mvc5+EF7的奇妙之旅