当前位置:主页 > 北方养猪网 >

wen

牛蛙彩票网站白小姐

北方养猪网 发布时间:2019-07-29 阅读:

"\u003Cdiv\u003E\u003Ch1\u003E前言\u003C\u002Fh1\u003E\u003Cul\u003E\u003Cli\u003EFlutter 作为Google出品的一个\u003Cstrong\u003E新兴的跨平台移动客户端UI开发框架\u003C\u002Fstrong\u003E,正在被越来越多的开发者和组织使用,包括阿里的咸鱼、腾讯的微信等。\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp1.pstatp.com\u002Flarge\u002Fpgc-image\u002F905a0a94901b443085542865a57610ed\" img_width=\"696\" img_height=\"356\" alt=\"Android开发:手把手带你入门跨平台UI开发框架Flutter\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cul\u003E\u003Cli\u003E今天,我将献上一份 \u003Cstrong\u003E《全面 & 详细的Flutter学习指南》\u003C\u002Fstrong\u003E,希望你们会喜欢。\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp1.pstatp.com\u002Flarge\u002Fpgc-image\u002F1100a92d5f1148408fccd78e7de0c31c\" img_width=\"526\" img_height=\"442\" alt=\"Android开发:手把手带你入门跨平台UI开发框架Flutter\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Chr\u003E\u003Ch1\u003E目录\u003C\u002Fh1\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp1.pstatp.com\u002Flarge\u002Fpgc-image\u002Ffd791a3e8e9c463c8d9eb0b1cbe37683\" img_width=\"778\" img_height=\"964\" alt=\"Android开发:手把手带你入门跨平台UI开发框架Flutter\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Chr\u003E\u003Ch1\u003E\u003Cstrong\u003E1. 简介\u003C\u002Fstrong\u003E\u003C\u002Fh1\u003E\u003Cul\u003E\u003Cli\u003E定义:一款Google出品&开源的移动客户端UI开发框架(SDK)\u003C\u002Fli\u003E\u003Cli\u003E作用:用\u003Cstrong\u003E一套代码\u003C\u002Fstrong\u003E同时在Android、iOS上\u003Cstrong\u003E快速构建高质量、高性能\u003C\u002Fstrong\u003E的原生用户界面\u003C\u002Fli\u003E\u003Cli\u003E开发语言:Dart语言(高开发效率、高性能等)\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Chr\u003E\u003Ch1\u003E\u003Cstrong\u003E2. 特点\u003C\u002Fstrong\u003E\u003C\u002Fh1\u003E\u003Cul\u003E\u003Cli\u003EFlutter的主要特点包括:使用自身的高性能渲染引擎进行渲染 & Dart编程语言语言\u003C\u002Fli\u003E\u003Cli\u003E具体介绍如下:\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cp\u003E2.1 高性能渲染引擎\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003EFlutter进行UI绘制时,使用的是自带的\u003Cstrong\u003E高性能渲染引擎\u003C\u002Fstrong\u003E进行绘制渲染(不使用WebView & 原生控件)\u003C\u002Fli\u003E\u003Cli\u003E好处:保证在Android和iOS上UI的一致性 & 避免对原生控件依赖而带来的限制和维护成本。\u003C\u002Fli\u003E\u003Cli\u003E组成:C、C ++、Dart、Skia(2D渲染引擎),具体描述如下:\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp3.pstatp.com\u002Flarge\u002Fpgc-image\u002Fda348bd865ff44a0926f6a5619db3942\" img_width=\"1000\" img_height=\"617\" alt=\"Android开发:手把手带你入门跨平台UI开发框架Flutter\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E特别注意:\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003EFlutter依靠Flutter Engine虚拟机在iOS和Android上运行\u003C\u002Fli\u003E\u003Cli\u003EFlutter Engine使用C\u002FC++编写 = 低延迟输入 + 高帧速率\u003C\u002Fli\u003E\u003Cli\u003E开发人员可通过Flutter框架和API在内部进行交互\u003C\u002Fli\u003E\u003Cli\u003E 下面,简单介绍一下Flutter的2D渲染引擎:Skia\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp3.pstatp.com\u002Flarge\u002Fpgc-image\u002F173ae3584a01444cb2e9270a5f0c5db2\" img_width=\"1000\" img_height=\"481\" alt=\"Android开发:手把手带你入门跨平台UI开发框架Flutter\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E2.2 Dart语言\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E介绍Dart语言前先介绍两个概念:JIT和AOT。程序主要有两种运行方式:静态编译 & 动态编译,具体如下:\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp9.pstatp.com\u002Flarge\u002Fpgc-image\u002F87361c2b3908421989d33af6521fe304\" img_width=\"1000\" img_height=\"389\" alt=\"Android开发:手把手带你入门跨平台UI开发框架Flutter\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E特别注意:\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003EJIT 和 AOT指的是程序运行方式,和编程语言并非强关联的。\u003C\u002Fli\u003E\u003Cli\u003E有些语言可以以JIT方式 & AOT方式一起运行,如Java,它可在第一次执行时编译成中间字节码、然后在之后执行时可以直接执行字节码\u003C\u002Fli\u003E\u003Cli\u003E通常区分是否为AOT的标准就是看代码在执行之前是否需要编译,只要需要编译,无论其编译产物是字节码还是机器码,都属于AOT\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cp\u003EDart语言的特点\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003EDart语言具备开发效率高、高性能 & 类型安全的特点\u003C\u002Fli\u003E\u003Cli\u003E具体如下:\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp1.pstatp.com\u002Flarge\u002Fpgc-image\u002F90b384a0e86d49e2b2e4f1d41a343cf1\" img_width=\"1000\" img_height=\"650\" alt=\"Android开发:手把手带你入门跨平台UI开发框架Flutter\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Chr\u003E\u003Ch1\u003E\u003Cstrong\u003E3. 原理解析\u003C\u002Fstrong\u003E\u003C\u002Fh1\u003E\u003Cp\u003E3.1 框架结构\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003EFlutter框架主要分为两层:FrameWork层、Engine层,如下图所示:\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp1.pstatp.com\u002Flarge\u002Fpgc-image\u002Fde5f4d3bcceb48a2b38044bb03f0a594\" img_width=\"1000\" img_height=\"523\" alt=\"Android开发:手把手带你入门跨平台UI开发框架Flutter\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cul\u003E\u003Cli\u003E说明:开发时,主要基于Framework层;运行时,则是运行在 Engine上。每层的具体介绍如下:\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp3.pstatp.com\u002Flarge\u002Fpgc-image\u002Fce8068c6dd3442518ab9c39e9da97a42\" img_width=\"1000\" img_height=\"577\" alt=\"Android开发:手把手带你入门跨平台UI开发框架Flutter\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E3.2 原理概述\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E开发时,主要基于Framework层;运行时,则是运行在 Engine上\u003C\u002Fli\u003E\u003Cli\u003EEngine是Flutter的独立虚拟机,由它适配 & 提供跨平台支持;因为其存在,Flutter不使用移动端系统的原生控件, 而是使用自己 Engine 来绘制 Widget (Flutter的显示单元); Dart 代码是通过 AOT 编译为平台的原生代码,所以 Flutter可直接与平台通信,不需要JS引擎的桥接。\u003C\u002Fli\u003E\u003Cli\u003E同时 Flutter 唯一要求系统提供的是 canvas,以实现UI的绘制。\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp3.pstatp.com\u002Flarge\u002Fpgc-image\u002Fab5060cfb0a3479f8af9e6a64ae1dae5\" img_width=\"1000\" img_height=\"492\" alt=\"Android开发:手把手带你入门跨平台UI开发框架Flutter\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cul\u003E\u003Cli\u003E编译时,具体如下:\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp1.pstatp.com\u002Flarge\u002Fpgc-image\u002F071fdcd8cd714e6a8431b4cb7fd29bda\" img_width=\"1000\" img_height=\"617\" alt=\"Android开发:手把手带你入门跨平台UI开发框架Flutter\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E3.3 关于widget\u003C\u002Fp\u003E\u003Cp\u003EFlutter理念:“一切皆为Widget”,Widget是Flutter应用程序用户界面的基本构建块,具备以下特点:\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E属于具有一致性的统一对象模型,与其他将视图、控制器、布局和其他属性分离的框架不同。更新widget时更加高效\u003C\u002Fli\u003E\u003Cli\u003E不可变的,仅支持一。颐恳恢∩喜换嶂苯痈,要更新而必须使用Widget的状态。无状态和有状态Widget 的核心特性相同,每一帧都会重新构建;\u003C\u002Fli\u003E\u003Cli\u003E有一个State对象,用于跨帧存储状态数据 & 恢复\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Chr\u003E\u003Ch1\u003E4. 特点\u003C\u002Fh1\u003E\u003Cul\u003E\u003Cli\u003EFlutter具备跨平台、开发效率高 & 高性能的特点\u003C\u002Fli\u003E\u003Cli\u003E具体说明如下:\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cp\u003E4.1 跨平台 & 开发效率高\u003C\u002Fp\u003E\u003Cp\u003EFlutter通过使用上述所述的自身渲染引擎、原理框架 & Widget运行,使用一套代码即可同时构建iOS和Android应用,从而实现跨平台的特性,最终提高开发的效率\u003C\u002Fp\u003E\u003Cp\u003E4.2 高性能\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E原因1:通过其自带的高性能渲染引擎进行渲染\u003C\u002Fli\u003E\u003Cli\u003E原因2:Dart语言本身的语言特性\u003C\u002Fli\u003E\u003Cli\u003E原因3:编译过程特点,具体如下:\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp1.pstatp.com\u002Flarge\u002Fpgc-image\u002F23a0b6df0b384810b7f9636c3e86d37c\" img_width=\"1000\" img_height=\"473\" alt=\"Android开发:手把手带你入门跨平台UI开发框架Flutter\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Ch1\u003E5. 对比\u003C\u002Fh1\u003E\u003Cul\u003E\u003Cli\u003E跨平台开发的本质是为了:增加代码复用、减少不同平台差异适配的工作量 & 提高开发效率。\u003C\u002Fli\u003E\u003Cli\u003E目前主流的跨平台开发框架有:React-Native、Weex和本文提及的Flutter。下面,我先简单介绍React-Native和Weex,再进行三者的对比。\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp1.pstatp.com\u002Flarge\u002Fpgc-image\u002Fb2f85ddf1c3741e3a6d31b627e46aad8\" img_width=\"1000\" img_height=\"597\" alt=\"Android开发:手把手带你入门跨平台UI开发框架Flutter\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E5.1 React-Native\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E\u003Cstrong\u003E简介\u003C\u002Fstrong\u003E\u003C\u002Fli\u003E\u003Cli\u003E 由Facebook出品,采用了JavaScript语言、JSCore引擎和通过原生渲染的跨平台框架\u003C\u002Fli\u003E\u003Cli\u003E\u003Cstrong\u003E实现原理\u003C\u002Fstrong\u003E\u003C\u002Fli\u003E\u003Cli\u003E 通过编写JavaScript语言代码,通过 React Native 的中间层来调用 Native端的组件,最终实现相应的功能。JS端中所写控件的作用类似 Map中的key 值,对应着Native端的对应控件(如 Android 中 标签对应 ViewGroup 控件)。JS端会通过多个key 组合成Dom,最后交由Native端进行解析,最终渲染出Native端的控件。\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp1.pstatp.com\u002Flarge\u002Fpgc-image\u002F13dc719d1d824a0d8a32751277679300\" img_width=\"712\" img_height=\"732\" alt=\"Android开发:手把手带你入门跨平台UI开发框架Flutter\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cul\u003E\u003Cli\u003E\u003Cstrong\u003E实现框架\u003C\u002Fstrong\u003E\u003C\u002Fli\u003E\u003Cli\u003E React Native的架构主要由三层实现。其中最重要的是由C++ 实现的中间适配层,此处最主要封装了JavaScriptCore用于执行JS的解析,最终实现了JS端与原生端的双向通信交互。而React Native运行在JavaScriptCore中。(在iOS上直接使用内置的javascriptcore、在Android则使用webkit.org官方开源的jsc.so)\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp1.pstatp.com\u002Flarge\u002Fpgc-image\u002F2b258ad4b65f45d4a503cca545ea01f6\" img_width=\"1000\" img_height=\"842\" alt=\"Android开发:手把手带你入门跨平台UI开发框架Flutter\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E5.2 Weex\u003C\u002Fp\u003E\u003Cul\u003E\u003Cli\u003E\u003Cstrong\u003E简介\u003C\u002Fstrong\u003E\u003C\u002Fli\u003E\u003Cli\u003E 由Alibaba出品,采用了JavaScript语言、JS V8引擎和通过原生渲染的跨平台框架\u003C\u002Fli\u003E\u003Cli\u003E\u003Cstrong\u003E实现原理\u003C\u002Fstrong\u003E\u003C\u002Fli\u003E\u003Cli\u003E 与React-Native类似,JS端会通过多个key组合成Dom,最后交由Native端进行解析,最终渲染出Native端的控件,但区别在于:Weex是可以跨三端的 = Android、iOS、Web,其原因在于在开发过程中,代码模式、编译过程、模板组件、数据绑定、生命周期等上层语法是一致,不同的是Web端和Native端对Virtual DOM 执行的解析方法有所区别。\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp1.pstatp.com\u002Flarge\u002Fpgc-image\u002F05e01427bd0449fe931c3b195e0496d5\" img_width=\"760\" img_height=\"342\" alt=\"Android开发:手把手带你入门跨平台UI开发框架Flutter\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cul\u003E\u003Cli\u003E\u003Cstrong\u003E实现框架\u003C\u002Fstrong\u003E\u003C\u002Fli\u003E\u003Cli\u003E weex的架构主要分为三部分,具体如下:\u003C\u002Fli\u003E\u003C\u002Ful\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp1.pstatp.com\u002Flarge\u002Fpgc-image\u002F23105fb778e3479a998e0b162c9f44be\" img_width=\"1000\" img_height=\"451\" alt=\"Android开发:手把手带你入门跨平台UI开发框架Flutter\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E5.3 三者对比\u003C\u002Fp\u003E\u003Cdiv class=\"pgc-img\"\u003E\u003Cimg src=\"http:\u002F\u002Fp1.pstatp.com\u002Flarge\u002Fpgc-image\u002Fe04060db6b3849439f9467f6bf128d88\" img_width=\"1000\" img_height=\"310\" alt=\"Android开发:手把手带你入门跨平台UI开发框架Flutter\" inline=\"0\"\u003E\u003Cp class=\"pgc-img-caption\"\u003E\u003C\u002Fp\u003E\u003C\u002Fdiv\u003E\u003Cp\u003E注:对于性能的对比,从理论上来说Flutter应该是最接近原生性能 & 最好的,但就目前实际应用&体验中并没具备很明显的差异化,后续需进行进一步的验证。\u003C\u002Fp\u003E\u003Chr\u003E\u003C\u002Fdiv\u003E"'.slice(6, -6),