赞
踩
Google大力推广Flutter,它主要体现在UI上的跨平台支持,从最初的Android、Ios,到现在逐步有了web、windows、linux、macos、嵌入式设备,可谓一个跨平台霸主。Flutter官网
Flutter优点:
Flutter其使用语言Dart(google自己的语言),为什么Flutter使用Dart?,大致就是以下几条:
总之:Dart可以AOT编译或JIT,解释或转换成其他语言。Dart编译和执行特别灵活,特别快。
那么开始吧,使用前先来安装它的环境
ps:由于flutter有使用到Git,所以使用者也确定一下有Git哦
很多时候用到flutter命令或者后面会使用到的其他命令,都会访问到国外的网站,如果你有稳定梯子可以不考虑,如果没有,可以参考下这里配置下国内flutter镜像环境
这里主要提到的windows和mac,linux安装也差不多,可以在官网上根据流程下载安装
在此页面查看版本,根据需要的来
https://flutter.dev/docs/development/tools/sdk/releases#windows
在此页面查看版本,根据需要的来
https://flutter.dev/docs/development/tools/sdk/releases#macos
解压到想要留的地方,以mac下载的zip为例,比如我解压到资源库中,当前文章下载版本:v1.5.4
cd /Users/xxx/Library
unzip ~/Downloads/flutter_macos_v1.5.4-hotfix.2-stable.zip
方式1. 在上一步flutter解压码目录下,比如Library目录执行:
export PATH="$PATH:`pwd`/flutter/bin"
方式2. 直接在base_profile文件中声明,比如mac的/User/xxx目录下的./bash_profile里声明环境变量:
#flutter配置
export PATH="$PATH:/Users/xxx/Library/flutter/bin"
使环境变量生效
source /User/xxx/.bash_profile
查看环境变量是否生效了
echo $PATH
输出带/flutter/bin的就对了
windows一样,在将flutter文件下载好的flutter里的bin目录路径配置到PATH中即可,比如这里windows里,flutter是解压在C盘的src目录下,那么配置环境变量到path中:
在把flutter sdk环境变量配置后,则可以在终端里使用flutter命令了
flutter precache
可以用flutter help precache查看帮助
-h, --help Print this usage information. -a, --all-platforms Precache artifacts for all platforms. -f, --force Force downloading of artifacts. --[no-]android Precache artifacts for Android development (defaults to on) --[no-]ios Precache artifacts for iOS developemnt (defaults to on) --[no-]web Precache artifacts for web development --[no-]linux Precache artifacts for linux desktop development --[no-]windows Precache artifacts for windows desktop development --[no-]macos Precache artifacts for macOS desktop development --[no-]fuchsia Precache artifacts for Fuchsia development --[no-]universal Precache artifacts required for all developments (defaults to on)
我的理解是,默认已经有了android、ios平台支持和一些通用支持,然后我想安装web的支持,就只需要敲以下命令:
flutter precache --web
然后,敲了后没有任何效果,查看flutter目录下也没有啥变化,在实际写web的时候也
flutter/bin/cache/artifacts/engine
这个目录下依旧只有android、ios、common的一些,有知道的可以分享一下
flutter下载的sdk有stable、dev等
flutter channel
输出:
Flutter channels:
beta
dev
master
* stable
查看当前channel,当前在stable中,后面再更具体的名字可切换channel
flutter upgrade
前面安装了flutter sdk和配置环境变量,在开始编码前,可以通过命令看下还有些什么需要安装的
flutter doctor
输出:
[!] Android Studio (version 3.2)
✗ Flutter plugin not installed; this adds Flutter specific functionality.
✗ Dart plugin not installed; this adds Dart specific functionality.
[!] IntelliJ IDEA Ultimate Edition (version 2017.1.3)
✗ Flutter plugin not installed; this adds Flutter specific functionality.
✗ Dart plugin not installed; this adds Dart specific functionality.
[!] VS Code (version 1.33.1)
✗ Flutter extension not installed; install from
https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
[!] Connected device
! No devices available
显示出本地有的环境,环境还需要添加的,就像这里显示的,我本地有的,AndroidStudio、VSCode、IDEA都还没有安装Flutter插件、Dart插件,也没有连接设备(ios、Android),对应到你准备开发使用的编辑器,任选一个去安装插件进行开发即可。
AndroidStudio和IDEA在设置里的plugins里去找到flutter和Dart的插件进行安装即可,这里贴一下VSCode的插件安装
我这里是因为已经安装好了,如果没安装,搜索到它们,然后安装即可
这里讲flutter_web的Project
执行命令:
flutter pub global activate webdev
然后就是等待完成,如果没有科学上网,注意配置国内flutter镜像环境
完成后看到下载安装成功,比如这里下载到了2.0.7版本:
环境变量需要配置两个,都是后面编码运行会要用到的,一个是刚下载的webdev,另外一个是dart
#flutter webdev配置
export PATH="$PATH:/Users/xxx/Library/flutter/.pub-cache/bin"
#dart环境配置
export PATH="$PATH:/Users/xxx/Library/flutter/bin/cache/dart-sdk/bin"
使环境变量生效
source /User/xxx/.bash_profile
ps:升级版本时候也可以再用这个命令来升级webdev的版本
打开命令面板,
打开方式:顶部导航栏中,查看->命令面板。或快捷键:
mac : command+shift+A
windows : Ctrl+shift+A
然后等待项目创建完成,期间VSCode可能会弹框提示安装Dart package,安装即可。
项目创建好后能看到如下的工程结构
(1). VSCode中运行
创建好的工程就已经是HelloWorld的显示页面了,使用F5调试运行即可,直接运行快捷键参考“调试”菜单
这样就能看到项目运行起来了,ip为127.0.0.1,端口可能每次都不一样
(2). 命令方式运行
命令采用我们前面安装的 webdev来进行运行,好处就是可以指定ip,这样在同局域网里,其他设备也可以访问。
操作:打开终端到项目根路径下,或者直接在VSCode的终端菜单,点击新建终端,在终端里输入以下命令,则可以指定ip了,比如我们要指定ip:192.168.164.31
webdev serve --hostname 192.168.164.31
运行效果如下:
能看到ip为自己指定的ip,端口为8080,关于webdev命令,可以查看其help,发布打包也是用它打包。
ps:在Flutter中的显示一切皆组件,查看这个HelloWorld工程就能看出来
方式:类继承的组件,通过实现build方法,返回一个组件,这样一个组件一个组件合起来成了整个页面。直接上代码,注释在代码中:
/** * 程序入口,main方法,runApp调用组件 */ void main() => runApp(MyApp()); /** * MyApp类,继承自一个无状态组件 */ class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context) { //返回一个提供好的 MaterialApp 组件 return MaterialApp( title: 'Flutter Demo', theme: ThemeData( primarySwatch: Colors.blue, ), //内容为MyHonePage组件 home: MyHomePage(title: 'Flutter Demo Home Page'), ); } } /** * MyHomePage 类 继承自一个无状态组件 */ class MyHomePage extends StatelessWidget { MyHomePage({Key key, this.title}) : super(key: key); final String title; @override Widget build(BuildContext context) { //返回脚手架组件 return Scaffold( appBar: AppBar( title: Text(title), ), //内容为一个居中的组件,包含了我们的Hello,World body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text( 'Hello, World!', ), ], ), ), // This trailing comma makes auto-formatting nicer for build methods. ); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。