什么是flutter

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

flutter具有以下几个优点

  • 快速开发(具有热加载功能,类似于webpack配置的devServer的热加载)
  • 富有表现力,漂亮的用户界面
  • 现代的,响应式框架(State类,通过调用setState,改变对应的值,widget就会重新渲染)
  • 访问本地功能和SDK
  • 统一的应用开发体验

移动端解决方案的几个阶段

  1. webview在原生app中嵌入h5页面
  2. hybrid 通过JSBridge来做native与非native之间的桥梁(本质还是web模式)
  3. react-native 将view编译成原生的view从而达到良好的体验,但还是需要JSBridge做连接
  4. Flutter 吸收了前者的教训之后,在渲染技术上,选择了自己实现(GDI)

reactive-native原理图

flutter实现原理

开始搭建flutter

使用镜像

flutter官方为中国开发者搭建了临时镜像,大家可以把下面的环境变量加到用户的环境变量中mac直接vim ~/.bash_profile修改即可,如果用了zsh 也可~/.zshrc,修改完source ~/.bash_profile即可

export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

获取Flutter SDK

传送门需要翻墙,或者直接去github下载安装包

下载完解压,然后添加flutter到相关工具的path中export PATH=pwd/flutter/bin:$PATH

注意pwd为你解压flutter安装包的路径

运行flutter

运行flutter doctor来查看还有什么东西没有安装,然后根据提示安装相应的东西即可

创建一个flutter项目

以上所有安装都完毕后可以再terminal通过flutter create 目录名来创建项目,然后执行open -a Simulator打开苹果手机模拟器

安装下面的包来确保能进行ios模拟调试

brew update
brew install --HEAD libimobiledevice
brew install ideviceinstaller ios-deploy cocoapods
pod setup

在你Flutter项目目录中通过 open ios/Runner.xcworkspace 打开默认的Xcode workspace.最后执行flutter run你的第一个flutter项目就跑起来了

flutter推荐的编辑器有vscode以及Android studio安装对应的插件即可

详细安装教程可以具体看flutter官网,本教程为自己的学习笔记,后面会另外开文如何使用flutter来进行开发

学习笔记:flutter项目搭建(mac版)的更多相关文章

  1. SpringCloud(一)学习笔记之项目搭建

    [springcloud项目名称不支持下划线] 一.创建父项目 File---new---project: 填写项目信息: 默认即可,点击finish创建完成: 由于父项目只用到pom文件 所以把sr ...

  2. vue开发环境搭建Mac版

    一.前言 要做一个移动端app,面对webapp最流行的三个技术React,angular,vue,三选一,如何选,可参考blog移动app技术选型,react,angular, vue, 下面是对  ...

  3. Android Studio 学习笔记(一)环境搭建、文件目录等相关说明

    Android Studio 学习笔记(一)环境搭建.文件目录等相关说明 引入 对APP开发而言,Android和iOS是两大主流开发平台,其中区别在于 Android用java语言,用Android ...

  4. Docker学习笔记之一,搭建一个JAVA Tomcat运行环境

    Docker学习笔记之一,搭建一个JAVA Tomcat运行环境 前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序 ...

  5. vue学习(1) vue-cli 项目搭建

    vue学习(1)  vue-cli 项目搭建 一.windows环境 1. 下载node.js安装包 官网:https://nodejs.org/en/download/ 选择LTS下载 2. 安装 ...

  6. OD调试学习笔记7—去除未注册版软件的使用次数限制

    OD调试学习笔记7—去除未注册版软件的使用次数限制 本节使用的软件链接 (想自己试验下的可以下载) 一:破解的思路 仔细观察一个程序,我们会发现,无论在怎么加密,无论加密哪里,这个程序加密的目的就是需 ...

  7. thinkphp学习笔记3—项目编译和调试模式

    原文:thinkphp学习笔记3-项目编译和调试模式 1.项目编译 在章节2.4项目编译中作者讲到使用thinkphp的项目在第一次运行的时候会吧核心需要加载的文件去掉空白和注释合并到一个文件中编译并 ...

  8. 网络协议学习笔记(二)物理层到MAC层,交换机和VLAN,ICMP与ping原理

    概述 之前网络学习笔记主要讲解了IP的诞生,或者说整个操作系统的诞生,一旦有了IP,就可以在网络的环境里和其他的机器展开沟通了.现在开始给大家讲解关于网络底层的相关知识. 从物理层到MAC层:如何在宿 ...

  9. JavaWeb学习笔记(一)Mac 下配置Tomcat环境

     最近,想鼓捣与服务器端的交互,只能自己搭建环境了. 上个周一鼓捣了一点,周五再鼓捣,发现忘得已经差不多了.好记性不如烂笔头,还是记录下来比较好. 首先,去Tomcat的官网,下载Mac版的Tomca ...

随机推荐

  1. CDH健康检查报DATA_NODE_BLOCK_COUNT告警

    告警原文: The health test result for DATA_NODE_BLOCK_COUNT has become concerning: The DataNode has 500,0 ...

  2. JAVA自学笔记 - 从零开始

    文中记录的内容都是博主从自己的学习笔记中总结的. 如果遇到问题,或者有不一样的看法,欢迎提出! 1安装JDK 从Oracle官网下载JDK,我使用的版本是1.7.0.80. 操作系统是win7 64位 ...

  3. Decorator:从原理到实践

    前言 原文链接:Nealyang/personalBlog ES6 已经不必在过多介绍,在 ES6 之前,装饰器可能并没有那么重要,因为你只需要加一层 wrapper 就好了,但是现在,由于语法糖 c ...

  4. 第四周 Java课件内容动手动脑

    1.JDK中的Math类 package ke1; public class TestMath { public static void main(String[] args) { /*------- ...

  5. 【THE LAST TIME】彻底吃透 JavaScript 执行机制

    前言 The last time, I have learned [THE LAST TIME]一直是我想写的一个系列,旨在厚积薄发,重温前端. 也是给自己的查缺补漏和技术分享. 欢迎大家多多评论指点 ...

  6. 在Debian上用FVWM做自己的桌面

    用FVWM做自己的桌面 Table of Contents 1. 前言 2. 学习步骤 3. 准备 3.1. 软件包 3.2. 字体 3.3. 图片 3.4. 参考资料 4. 环境 5. 布局 6. ...

  7. Ubuntu 启动zookeeper报错

    在启动zk客户端连接server时报错: 2019-03-30 23:06:24,915 [myid:localhost:2181] - INFO [main-SendThread(localhost ...

  8. springboot 2.1.3 + mybatis + druid配置多数据源

    在一些大型的项目中,通常会选择多数据库来满足一些业务需求,此处讲解使用springboot.mybatis和druid来配置多数据源 1.依赖配置 pom文件引入相关依赖 <dependency ...

  9. 11 种在大多数教程中找不到的JavaScript技巧

    当我开始学习JavaScript时,我把我在别人的代码.code challenge网站以及我使用的教程之外的任何地方发现的每一个节省时间的技巧都列了一个清单. 在这篇文章中,我将分享11条我认为特别 ...

  10. java基础之读取文件方法大全

    1.按字节读取文件内容2.按字符读取文件内容3.按行读取文件内容 4.随机读取文件内容 public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件,如 ...