工欲善其事,必先利其器。 工匠想要使他的工作做好,一定要让工具锋利。 比喻要做好一件事,准备工具非常重要.在软件开发领域也是一样的,如果想入门一个框架或者语言,都必须先了解附加的工具如何使用.flutter命令是flutter框架重要部分之一。

在本文中将说明每个Flutter命令的作用以及使用方式,以及子命令。

flutter create

在指定的目录中,创建新的flutter项目,如果没有指定目录,则在当前目录下创建项目

flutter create ~/flutter #在家目录下的flutter目录项目
flutter create . #在当前目录下创建

flutter -v

查看APP所有日志的输出,对于调试是非常有用处,在调试时需要配合run命令使用

flutter -v run

flutter -d

切换在不同设备上运行app,如果没有指定设备,默认将会使用设备列表的第一个设备,这对于计算机连接多个设备时非常有用,可以使用设备名称或者设备id作为参数

flutter run -d NX569J #设备名称
flutter run -d devices_id #设备id

flutter analyze

编辑Flutter代码时,使用分析器检查代码是非常重要,默认是分析整个项目的代码,你也可以通过使用`analysis_options.yaml`文件来排除不需要的代码分析

analyzer:
  exclude:
    - flutter/**
analysis_options.yaml

有时候你可能需要代码分析一直在运行,可以使用--watch选项

flutter analyze --watch

当运行分析命令flutter都执行一次`pub get`命令,如果不需要运行,可以执行以下命令

flutter analyze --no-pub 

flutter attach

相当于命令flutter run命令,不同之处在很多执行都是自己手动,比如热重载,

flutter bash-completion

在执行该命令时会输出一的配置脚本,脚本可以实现命令行提示的自动完成,可用于zsh,bash的配置,将脚本添加到`~/.bashrc`或者`~/.zshrc`

if type complete &>/dev/null; then
  __flutter_completion() {
    local si="$IFS"
    IFS=$'\n' COMPREPLY=($(COMP_CWORD="$COMP_CWORD" \
                           COMP_LINE="$COMP_LINE" \
                           COMP_POINT="$COMP_POINT" \
                           flutter completion -- "${COMP_WORDS[@]}" \
                           2>/dev/null)) || return $?
    IFS="$si"
  }
  complete -F __flutter_completion flutter
elif type compdef &>/dev/null; then
  __flutter_completion() {
    si=$IFS
    compadd -- $(COMP_CWORD=$((CURRENT-1)) \
                 COMP_LINE=$BUFFER \
                 COMP_POINT=0 \
                 flutter completion -- "${words[@]}" \
                 2>/dev/null)
    IFS=$si
  }
  compdef __flutter_completion flutter
elif type compctl &>/dev/null; then
  __flutter_completion() {
    local cword line point words si
    read -Ac words
    read -cn cword
    let cword-=1
    read -l line
    read -ln point
    si="$IFS"
    IFS=$'\n' reply=($(COMP_CWORD="$cword" \
                       COMP_LINE="$line" \
                       COMP_POINT="$point" \
                       flutter completion -- "${words[@]}" \
                       2>/dev/null)) || return $?
    IFS="$si"
  }
  compctl -K __flutter_completion flutter
fi

flutter build

构建应用程序的apk,appbundle,aot,ios,IOS应用需要在Mac osx上构建

flutter build apk

flutter channel

切换flutter不同的版本,在执行flutter channel会输出不同分支信息,默认使用stable分支

flutter channel # 输出channel
flutter channel dev # 切换到dev channel

flutter clean

删除`build/`和`.dart_tool/`目录,清除缓存信息,避免之前不同版本代码的影响

flutter config

可以用于指定gradle,android sdk,android studio的目录或者开启,禁用analytics选项,analytics选项用于flutter工具的报告

flutter config --gradle-dir /gradle/

flutter devices

列出已经连接到计算机的设备

flutter devices
NX569J                    • 192.168.43.1:5555 • android-arm64 • Android 7.1.2 (API 25)
Android SDK built for x86 • emulator-5554     • android-x86   • Android 9 (API 28) (emulator)

flutter doctor

检查开发工具链是否完整安装,对于安装环境非常有用处,检查andorid licenses需要连接外网,请科学上网

flutter doctor

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, v1.2.1, on Linux, locale en_US.UTF-8)
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[✓] Android Studio (version 3.3)
[✓] VS Code (version 1.33.1)
[✓] Connected device (2 available)

• No issues found!

flutter drive

执行flutter ui测试,该工具类似与web端的`Selenium`,`WebDriver`,`Protractor`.你可以指定不同模式进行测试,可以是debug,profile,release,flavor模式,flavor模式可以指定平台规范,你还可以指定在不同的平台测试,甚至可以指定页面路由

flutter drive --debug --target-platform android-x86

flutter emulators

列出,创建,启动模拟器,默认是列出模拟器

flutter emulators --launch flutter_emulator #启动
flutter emulators # 列出
flutter emulators --create Pixel_API_28 # 创建

flutter format

按照dart代码规范格式项目代码文件,`flutter format .`是当前项目所有文件,也可以指定目录或者文件

flutter format dartfile

flutter verion

列出或者切换flutter版本,默认是列出所有版本

flutter version
flutter version v1.5.8

flutter upgrade

更新flutter代码,实质就是git代码更新拉取,下载flutter sdk是git仓库的打包

flutter test

运行flutter单元测试,可以使用`--start-paused`模式等待调试器的连接,`--concurrency`可以指定并发任务数默认值是6

flutter test --concurrency=8

flutter install

安装app到一个已经连接的设备

flutter install

flutter screenshot

截取当前屏幕,默认是将图片输出到家目录下,使用-o指定输出目录

flutter screenshot -o /home/work

flutter packages

获取,测试,更新依赖包,`flutter pub` 将会传递剩余参数到dart工具的pub

flutter packages get