初识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());

class MyApp extends StatelessWidget {br/>@override
Widget build(BuildContext context) {
return MaterialApp(
title: ‘Flutter Demo‘,
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: ‘Flutter Demo Home Page‘),
);
}
}

class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;br/>@override
_MyHomePageState createState() => _MyHomePageState();
}

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

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

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
‘You have pushed the button this many times:‘,
),
Text(
‘$_counter‘,
style: Theme.of(context).textTheme.display1,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: ‘Increment‘,
child: Icon(Icons.add),
), // This trailing comma makes auto-formatting nicer for build methods.
);
}
}

可以看到两个类MyApp和MyHomePage,从名字我们就可以看出,一个是App的入口,一个是首页,前者继承StatelessWidget,后者继承StatefulWidget,说明MyApp是不需要状态的,而MyHomePage是需要的,所以它实现了createState方法来生成一个State(不管是StatelessWidget还是StatefulWidget,本身都是不可变的),_MyHomePageState继承了State<MyHomePage>,重写了build方法,返回Scaffold,其实Scaffold中的代码就是展示在页面中的内容。最后附上flutter的架构图:





领取上图资料欢迎加入Android开发技术交流QQ群:653583088,本群可免费获取Gradle、RxJava、小程序、Hybrid、移动架构、NDK、React Native、性能优化等技术教程!

初识flutter

原文地址:http://blog.51cto.com/13983283/2335618

时间: 2024-08-01 05:24:31

初识flutter的相关文章

Flutter学习----初识 Flutter

初识 Flutter Flutter 文件目录 需要注意的文件夹 文件夹 用途 android android 平台相关代码 ios ios 平台相关代码 lib flutter 相关代码,存放源码的地方 test 用于存放测试代码 pubspec.yaml 配置文件,一般存放一些第三方库 Flutter 入口文件.入口方法 void main(){ runApp(MyApp()); } /// 也可以简写 void main()=>runApp(MyApp()); MaterialApp 和

6.1.初识Flutter应用之实现一个计数器

用Android Studio和VS Code创建的Flutter应用模板是一个简单的计数器示例,本节先仔细讲解一下这个计数器Demo的源码,让读者对Flutter应用程序结构有个基本了解,在随后小节中,将会基于此示例,一步一步添加一些新的功能来介绍Flutter应用的其它概念与技术.对于接下来的示例,希望读者可以跟着笔者实际动手来写一下,这样不仅可以加深印象,而且也会对介绍的概念与技术有一个真切的体会.如果你还不是很熟悉Dart或者没有移动开发经验,不用担心,只要你熟悉面向对象和基本编程概念(

flutter兼论

Flutter是Google开发的一套全新的跨平台.开源UI框架,支持iOS.Android系统开发,并且是未来新操作系统Fuchsia的默认开发套件.自从2017年5月发布 第一个版本以来,目前Flutter已经发布了近60个版本,并且在2018年5月发布了第一个 “Ready for Production Apps”的Beta 3版本,6月20日发布了第一个 “Release Preview”版本. 初识Flutter Flutter的目标是使同一套代码同时运行在Android和iOS系统上

Flutter初识

第一个简单的示例代码: 1.yaml中添加库文件 cupertino_icons: ^0.1.2english_words: ^3.1.0 2. import 'package:flutter/material.dart';import 'package:english_words/english_words.dart'; void main() {  runApp(new MyApp());} class MyApp  extends StatelessWidget{  @override  

初识Python,望君多多关照

在学习Python之前,我们接触过数据结构和网页制作.前者让我们学习如何把C语言运用的更加整齐规范,而后者让我们亲身学习如何运用所学,制作一个静态网页.通过这些课程的学习,让我对C语言产生了比较大的压力,以至于对编程.对这学期的Python课程都有一种如临大敌的感觉. 但是真的学习了这门课程,体会了编码过程中的一些固定运用方法和套路之后,也许过程中对这门课程隐隐约约产生了一点点朦胧的感觉,仿佛他也并没有想象中的那么困难,起码现在的学习让我认为,他可能没有C语言那么繁琐和麻烦.当然,以一个初学者的

初识数组排序!!!!

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>初识数组排序</title> <!--调试成功--> <style type="text/css"> *{ padding:0; margin: 0; } li,ul{ list-style: none; } #p

初识操作系统和linux

初识操作系统和linux 1.计算机系统由硬件系统和软件系统两大部分组成:是一种能接收和存储信息,并按照存储在其内部的程序对海量数据进行自动.高速地处理,然后把处理结果输出的现代化智能电子设备. 2.世界上第一台计算机是1946年诞生在美国宾州大学. 3.冯·诺依曼体系结构:1946年数学家冯·诺依曼于提出计算机硬件系统由运算器.控制器.存储器.输入设备.输出设备.摩根定律:当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍.现在计算机技术进本很难遵

JAVA 初识类加载机制 第13节

JAVA 初识类加载机制 第13节 从这章开始,我们就进入虚拟机类加载机制的学习了.那么什么是类加载呢?当我们写完一个Java类的时候,并不是直接就可以运行的,它还要编译成.class文件,再由虚拟机解释给当前的操作系统去执行.这些过程都是我们看不见的,我们能看见的也就是一个.class文件.既然虚拟机要解释这些.class文件给当前的操作系统听,那么他怎么获得这些.class文件呢?虚拟机获得这些.class文件的过程就是类加载了. 所以,总结来说就是:虚拟机将.class文件从磁盘或者其他地

初识React

原文地址:北云软件-初识React 专注于UI 在MVC分层设计模式中,react常被拿来实现视图层(V).React不依赖于技术栈的其他部分,因此可以方便的在现有项目中尝试用它来实现一个小特性. 虚拟DOM React从DOM中抽象出来,给出一种更简洁的编程模型,且性能表现更好.能够通过NodeJS实现服务端渲染,通过React Native开发原生app. 数据流React实现单向.响应式数据流,减少boilerplate且比传统数据绑定更容易理解. 简洁的组件React的组件都实现了一个r