前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Flutter开发环境搭建

Flutter开发环境搭建

作者头像
若与
发布于 2019-05-15 06:55:57
发布于 2019-05-15 06:55:57
1.1K00
代码可运行
举报
运行总次数:0
代码可运行

flutter介绍

Flutter是谷歌的移动UI框架,可以快速在iOSAndroid上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。flutter发布的最新版已经支持pc端了。

优点

  1. 跨平台自绘引擎
  2. 高性能
  3. 原生用户界面
  4. 性能强大,120fps 流畅
  5. 优秀的动画设计
  6. 可选静态的语言,语言特性优秀
dart语言

flutter是使用dart语言开发的,如果你有任何一种编程语言的基础,那你就可以很快上手, dart给我的感觉就是编译型和解释型语言的结合体,吸取了双方的优点。 语言很灵活,学习门槛很低。 Dart是一种易于学习、易于扩展、并且可以部署到任何地方的应用编程语言。 花半个小时大概就可以开始写flutter了, 如果你不先了解dart, 也可以写flutter, 写写,就都会了,毕竟是面向IDE编程的。 dart学习

上面只是简单的介绍, flutter的热度这么高, 我相信你一定知道, 所以就不详细介绍了,下面主要介绍,如何搭建一个flutter的开发环境, 写一个简单的demo。

下面的操作都是在 MAC下完成的

使用镜像

由于在国内访问Flutter有时可能会受到限制,Flutter官方为中国开发者搭建了临时镜像,大家可以将如下环境变量加入到用户环境变量中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

注意: 此镜像为临时镜像,并不能保证一直可用,读者可以参考详情请参考 Using Flutter in China 以获得有关镜像服务器的最新动态。

获取Flutter SDK

去flutter官网下载其最新可用的安装包,转到下载页

注意,Flutter的渠道版本会不停变动,请以Flutter官网为准。另外,在中国大陆地区,要想正常获取安装包列表或下载安装包,可能需要访问外国网站,读者也可以去Flutter github项目下去下载安装包,转到下载页 。

解压安装包到你想安装的目录,如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd ~/flutter
unzip ~/Downloads/flutter_macos_v0.5.1-beta.zip

添加flutter相关工具到path中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export PATH=`pwd`/flutter/bin:$PATH

我的配置路径是放在.zshrc中如下,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export PATH="$HOME/.cargo/bin:$PATH"
export PATH="/Users/youdi/flutter/flutter/bin:$PATH"
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

运行 flutter doctor

运行以下命令查看是否需要安装其它依赖项来完成安装:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
flutter doctor

以上可能会报错,根据报错信息提示,一步步解决就可以了。 另外,将java和xcode都提前安装好,毕竟底层平台还是它们去解决的。 如果不用真机测试, 安装虚拟机

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
brew update
brew install --HEAD libimobiledevice
brew install ideviceinstaller ios-deploy cocoapods
pod setup

安装正常如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ flutter doctor                                                     
Doctor summary (to see all details, run flutter doctor -v):
[] Flutter (Channel dev, v1.5.8, on Mac OS X 10.14.3 18D109, locale zh-Hans-CN)

[] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[] iOS toolchain - develop for iOS devices (Xcode 10.2)
[] Android Studio (version 3.3)
[] IntelliJ IDEA Ultimate Edition (version 2018.2.7)
[] Connected device (1 available)

• No issues found!

flutter命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Manage your Flutter app development.

Common commands:

  flutter create <output directory>
    Create a new Flutter project in the specified directory.

  flutter run [options]
    Run your Flutter application on an attached device or in an emulator.

Usage: flutter <command> [arguments]

Global options:
-h, --help                  Print this usage information.
-v, --verbose               Noisy logging, including all shell commands executed.
                            If used with --help, shows hidden options.

-d, --device-id             Target device id or name (prefixes allowed).
    --version               Reports the version of this tool.
    --suppress-analytics    Suppress analytics reporting when this command runs.
    --bug-report            Captures a bug report file to submit to the Flutter team.
                            Contains local paths, device identifiers, and log snippets.

    --packages              Path to your ".packages" file.
                            (required, since the current directory does not contain a ".packages" file)

Available commands:
  analyze                  Analyze the project's Dart code.
  attach                   Attach to a running application.
  bash-completion          Output command line shell completion setup scripts.
  build                    Flutter build commands.
  channel                  List or switch flutter channels.
  clean                    Delete the build/ and .dart_tool/ directories.
  config                   Configure Flutter settings.
  create                   Create a new Flutter project.
  devices                  List all connected devices.
  doctor                   Show information about the installed tooling.
  drive                    Runs Flutter Driver tests for the current project.
  emulators                List, launch and create emulators.
  format                   Format one or more dart files.
  help                     Display help information for flutter.
  install                  Install a Flutter app on an attached device.
  logs                     Show log output for running Flutter apps.
  make-host-app-editable   Moves host apps from generated directories to non-generated directories so that they can be edited by developers.
  packages                 Commands for managing Flutter packages.
  precache                 Populates the Flutter tool's cache of binary artifacts.
  run                      Run your Flutter app on an attached device.
  screenshot               Take a screenshot from a connected device.
  stop                     Stop your Flutter app on an attached device.
  test                     Run Flutter unit tests for the current project.
  trace                    Start and stop tracing for a running Flutter app.
  upgrade                  Upgrade your copy of Flutter.
  version                  List or switch flutter versions.

Run "flutter help <command>" for more information about a command.
Run "flutter help -v" for verbose help output, including less commonly used options.

flutter help <command>就可以查看命名的功能和使用方法了, 比较常用的 create, run, build, emulators, install... 升级使用 upgrade

编辑器配置

官方推荐的Vscodeandroid studio,我前面使用的是AS, 但是在mac上我运行会很卡, 另外一个原因是,我平时开发会多种语言来回切换,所以,我都是IDEA上开发,安装不同语言的扩展。下面介绍IDEA的配置

  1. 安装dart和flutter的插件支持

重启以后就会生效

创建第一个flutter应用

  1. 创建flutter项目

  1. 目录结构

修改代码

上面创建完项目,会生成一段演示代码。 我们修改lib/main.dart成下面

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import 'package:flutter/material.dart';

void main() => runApp(MovieApp());

class MovieApp extends StatelessWidget {
//  MyApp({Key key, @required this.items}) :super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: "Youdi",
      home: Scaffold(
        appBar: AppBar(
          title: Text("电影?海报"),
        ),
        body: GridView(
          gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
              crossAxisCount: 3,
              childAspectRatio: 0.7),
          children: <Widget>[
            Image.network(
              "http://img5.mtime.cn/mg/2019/03/29/095612.14234221_170X256X4.jpg",
              fit: BoxFit.cover,
            ),
            Image.network(
                "http://img5.mtime.cn/mg/2019/04/29/094707.17276574_170X256X4.jpg",
                fit: BoxFit.cover),
            Image.network(
                "http://img5.mtime.cn/mg/2019/04/28/095934.61527523_170X256X4.jpg",
                fit: BoxFit.cover),
            Image.network(
                "http://img5.mtime.cn/mg/2019/04/25/110449.46476392_170X256X4.jpg",
                fit: BoxFit.cover),
            Image.network(
                "http://img5.mtime.cn/mg/2019/04/15/114602.17581769_170X256X4.jpg",
                fit: BoxFit.cover),
            Image.network(
                "http://img5.mtime.cn/mg/2019/04/03/180223.17695525_170X256X4.jpg",
                fit: BoxFit.cover),
            Image.network(
                "http://img5.mtime.cn/mg/2019/01/30/152307.77354514_1280X720X2.jpg",
                fit: BoxFit.cover),
            Image.network(
                "http://img5.mtime.cn/mg/2018/09/18/094114.20807426_1280X720X2.jpg",
                fit: BoxFit.cover),
            Image.network(
                "http://img5.mtime.cn/mg/2019/03/11/150531.14072799_1280X720X2.jpg",
                fit: BoxFit.cover),
            Image.network(
                "http://img5.mtime.cn/mg/2019/04/19/101040.92560167_126X190X4.jpg",
                fit: BoxFit.cover),
            Image.network(
                "http://img5.mtime.cn/mg/2019/05/07/104953.95141213_126X190X4.jpg",
                fit: BoxFit.cover),
            Image.network(
                "http://img5.mtime.cn/mg/2019/05/07/094241.52746772_126X190X4.jpg",
                fit: BoxFit.cover),
          ],
        ),
      ),
    );
  }
}

调试,使用虚拟机运行

选择虚拟机

在项目目录下,终端运行 flutter run

使用r可以热加载

我们看下虚拟机上的效果

flutter的学习资源

awesome

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.05.13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Node.js服务端开发教程 (一):NestJS框架0到1
要做Node.js编程嘛,Node.js是必须安装的,大家可以到官网(https://nodejs.org)下载安装,推荐安装LTS版本。
一斤代码
2019/11/04
2.8K0
2024 版:Node.js+Express+Koa2+Nest.js 开发服务端(高の青)
在现代的 web 开发中,Node.js 是一种非常流行的服务器端 JavaScript 环境。我们来编写一个大致的框架和一些关键代码片段,以帮助你了解如何使用 Node.js、Express、Koa2 和 Nest.js 开发服务端应用。
百课优用户
2024/07/29
4470
使用NestJS搭建服务端应用
最近有个需求需要基于前端技术栈实现一套中间层API接口,用于处理由前端维护的一套JSON配置文件。
神奇的程序员
2022/04/10
2.2K0
使用NestJS搭建服务端应用
学完这篇 Nest.js 实战,还没入门的来锤我!(长文预警)
最近接到一个小需求,需要自己全干(前端+后端),看到群里大家对Nest.js热情都很高,自己也心痒痒,所以就走上了 Nest.js 的不归路~
玖柒的小窝
2021/11/21
11K0
学完这篇 Nest.js 实战,还没入门的来锤我!(长文预警)
面试官:说一下大文件分片下载
但是,这样文件是全部读取出来返回,如果文件大了,比如好几个 G,会占用很大的内存。
神说要有光zxg
2024/04/30
5550
面试官:说一下大文件分片下载
Node.js服务端开发教程 (四):依赖注入基础篇
现代的服务业真是越做越到位了,我们只要提供出我们的需求,就会有人主动来提供服务,针对性的解决我们的问题。就如上面的打车服务一样,我们不再需要像以前一样,在寒风凛冽的马路上、大雨瓢泼的黑夜里,哆哆嗦嗦的招手拦车,一辆辆的问司机走不走,司机大哥忙着要下班,不走;司机大哥还没吃饭,不走;司机大哥心情不好,不走;路程太近,不走;路程太远,不走......我们只需要在温暖的房间里向打车软件系统告知我们的行程信息、偏好信息等,就会有愿意服务我们的司机上门为我们服务。
一斤代码
2019/11/12
1.7K0
Node.js服务端开发教程 (七):模块系统
说到“模块”两字,我们脑海里肯定会浮现很多关于它好处的词汇:封装性、可复用、按需引入等等。当一个软件系统的代码规模上升到一定复杂度后,我们的确需要一些方式来条理更清晰的组织我们的代码,让代码更易阅读、团队分工协作更方便。
一斤代码
2019/11/29
1.6K0
Nest.js 从零到壹系列(一):项目创建&路由设置&模块
本系列将以前端的视角进行书写,分享自己的踩坑经历。教程主要面向前端或者毫无后端经验,但是又想尝试 Node.js 的读者,当然,也欢迎后端大佬斧正。
一只图雀
2020/04/07
5.6K0
Nest.js Controller 解析:探索路由和请求处理的强大功能
Controller  它 主要是负责 特定路由请求处理并将响应结果返回给客户端。
程序员海军
2023/11/03
6370
NestJS学习总结篇
完整版本,点击此处查看 http://blog.poetries.top/2022/05/25/nest-summary
前端进阶之旅
2022/05/27
2.5K0
Node.js学习笔记(三)——Node.js开发Web后台服务
Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。 使用 Express 可以快速地搭建一个完整功能的网站。使用Node.js作为AngularJS开发Web服务器的最佳方式是使用Express模块。
张果
2022/09/28
8.4K0
Node.js学习笔记(三)——Node.js开发Web后台服务
Nest系列教程之控制器
为了创建一个基本的控制器,我们必须将元数据附加到类中。Nest 知道如何映射我们的控制器到相应的路由。
阿宝哥
2019/11/06
1.9K0
Nest系列教程之控制器
NestJS中使用Guard实现路由保护
NestJS中Guard是一种用于保护路由的机制。它可以在路由处理之前执行一些逻辑,例如验证用户身份、检查权限等。
kongxx
2024/09/11
2320
NestJS中使用拦截器
在NestJS中,拦截器是一种强大的工具,可以用来在请求处理的不同阶段执行一些操作。拦截器可以用于日志记录、验证、转换请求和响应等任务。今天就看看如何在NestJS中使用拦截器。
kongxx
2024/09/11
1970
快速打开 Nestjs 的世界
src目录是主要的源码目录,主要由入口文件 main.ts 和 一组 module,service,controller构成。
前端小鑫同学
2023/12/04
8190
快速打开 Nestjs 的世界
学完这篇 Nest.js 实战,还没入门的来锤我!(长文预警)
最近接到一个小需求,需要自己全干(前端+后端),看到群里大家对Nest.js热情都很高,自己也心痒痒,所以就走上了Nest.js的不归路~
五月君
2021/11/30
15.1K2
学完这篇 Nest.js 实战,还没入门的来锤我!(长文预警)
NestJS 7.x 折腾记: (5) 管道,一个好玩的东西!比如入参校验!
意思就git的提交记录以单行显示的前三条,而且提交概要中有build这个词的 在nest里面的管道,主要是用来做入参数据类型的拦截转换; 跟ng提供的概念差不多,大同小异~~
CRPER
2022/03/08
1.2K0
NestJS 7.x 折腾记: (5) 管道,一个好玩的东西!比如入参校验!
10分钟上手nest.js+mongoDB
项目中我们会用到 Mongoose 来操作我们的数据库,Nest 官方为我们提供了一个 Mongoose 的封装,我们需要安装 mongoose 和 @nestjs/mongoose:
淼学派对
2024/04/10
5350
BFF与Nestjs实战
主题列表:juejin, github, smartblue, cyanosis, channing-cyan, fancy, hydrogen, condensed-night-purple, greenwillow, v-green, vue-pro, healer-readable, mk-cute, jzman, geek-black, awesome-green, qklhk-chocolate
乐圣
2022/11/19
2.9K0
BFF与Nestjs实战
nestjs搭建HTTP与WebSocket服务
最近在做一款轻量级IM产品,后端技术栈框架使用了nodejs + nestjs作为服务端。同时,还需要满足一个服务同时支持HTTP服务调用以及WebSocket服务调用,此文主要记录本次搭建过程,以及基本的服务端设计。
w4ngzhen
2023/10/17
9000
nestjs搭建HTTP与WebSocket服务
推荐阅读
相关推荐
Node.js服务端开发教程 (一):NestJS框架0到1
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验