GetX Cli安裝
視頻教程地址
第一步:安裝Cli腳手架
我們通過(guò)命令flutter pub global activate get_cli
進(jìn)行腳手架的全局安裝铐尚,本文以Mac OS
為例。
JMdeMacBook-Pro:~ jm$ flutter pub global activate get_cli
Resolving dependencies...
+ _fe_analyzer_shared 25.0.0
+ analyzer 2.2.0
+ ansicolor 2.0.1
+ archive 3.1.2
+ args 2.2.0
+ async 2.8.2
+ charcode 1.3.1
+ cli_dialog 0.5.0
+ cli_menu 0.3.0-nullsafety.0
+ cli_util 0.3.3
+ clock 1.1.0
+ collection 1.15.0
+ convert 3.0.1
+ crypto 3.0.1
+ dart_console 1.0.0
+ dart_style 2.0.3
+ ffi 1.1.2
+ file 6.1.2
+ get_cli 1.6.0
+ glob 2.0.1
+ http 0.13.3
+ http_parser 4.0.0
+ intl 0.17.0
+ matcher 0.12.11
+ meta 1.7.0
+ package_config 2.0.0
+ path 1.8.0
+ pedantic 1.11.1
+ process_run 0.12.1+1
+ pub_semver 2.0.0
+ pubspec 2.0.1
+ quiver 3.0.1
+ recase 4.0.0
+ source_span 1.8.1
+ stack_trace 1.10.0
+ string_scanner 1.1.0
+ synchronized 3.0.0
+ term_glyph 1.2.0
+ typed_data 1.3.0
+ uri 1.0.0
+ version 2.0.0
+ watcher 1.0.0
+ win32 2.2.9
+ yaml 3.1.0
Downloading get_cli 1.6.0...
Downloading version 2.0.0...
Downloading recase 4.0.0...
Downloading pubspec 2.0.1...
Downloading cli_menu 0.3.0-nullsafety.0...
Downloading cli_dialog 0.5.0...
Downloading ansicolor 2.0.1...
Downloading uri 1.0.0...
Downloading process_run 0.12.1+1...
Downloading synchronized 3.0.0...
Downloading dart_console 1.0.0...
Downloading quiver 3.0.1...
Downloading dart_style 2.0.3...
Downloading analyzer 2.2.0...
Downloading _fe_analyzer_shared 25.0.0...
Downloading win32 2.2.9...
Building package executables...
Built get_cli:get.
Installed executables get and getx.
Warning: Pub installs executables into $HOME/.pub-cache/bin, which is not on your path.
You can fix that by adding this to your shell's config file (.bashrc, .bash_profile, etc.):
export PATH="$PATH":"$HOME/.pub-cache/bin"
Activated get_cli 1.6.0.
第二步:設(shè)置環(huán)境變量
一般Mac
的環(huán)境變量都是通過(guò)根目錄的.bash_profile
進(jìn)行環(huán)境變量設(shè)置则剃。
#getX
export PATH="$PATH":"$HOME/.pub-cache/bin"
第三步:使設(shè)置的環(huán)境變量生效
我們可以通過(guò)source
加上路徑蒜魄,對(duì)環(huán)境變量生效酗电。
JMdeMacBook-Pro:~ jm$ source "/Users/jm/.bash_profile"
第四步:校驗(yàn)是否成功安裝
我們通過(guò)get
命令,看能不能打印如下,如果有晒喷,那么恭喜你安裝成功了愚争。
JMdeMacBook-Pro:~ jm$ get
List available commands:
create:
controller: Generate controller
page: Use to generate pages
project: Use to generate new project
provider: Create a new Provider
screen: Generate new screen
view: Generate view
generate:
locales: Generate translation file from json files
model: generate Class model from json
help: Show this help
init: generate the chosen structure on an existing project:
install: Use to install a package in your project (dependencies):
remove: Use to remove a package in your project (dependencies):
sort: Sort imports and format dart files
update: To update GET_CLI
--version: Shows the current CLI version'
Time: 1814 Milliseconds
Cli創(chuàng)建工程
我們可以通過(guò)get create project
來(lái)進(jìn)行創(chuàng)建工程映皆,
JMdeMacBook-Pro:getx jm$ get create project
然后出現(xiàn)如下提示,我們選擇創(chuàng)建Flutter Project
--> 1) Flutter Project
2) Get Server
選擇之后需要輸入工程名稱(chēng)轰枝、公司域名捅彻、選擇iOS語(yǔ)言、選擇Android語(yǔ)言鞍陨、是否空安全步淹、是否校驗(yàn),選完知道就會(huì)為我們開(kāi)始創(chuàng)建工程诚撵。
JMdeMacBook-Pro:getx jm$ get create project
--> 1) Flutter Project
2) Get Server
? what is the name of the project? getx_example
? What is your company's domain? Example: com.yourcompany com.jimi
what language do you want to use on ios?
1) Swift
--> 2) Objective-C
what language do you want to use on android?
1) Kotlin
--> 2) Java
Do you want to use null safe?
--> 1) Yes!
2) No
do you want to use some linter?
1) no
2) Pedantic [Deprecated]
3) Effective Dart [Deprecated]
--> 4) Dart Recommended
Running `flutter create /Users/jm/Desktop/Project/getx/getx_example` …
$ flutter create --no-pub -i objc -a java --org com.jimi /Users/jm/Desktop/Project/getx/getx_example
Creating project ....
test/widget_test.dart (created)
pubspec.yaml (created)
README.md (created)
lib/main.dart (created)
windows/runner/flutter_window.cpp (created)
windows/runner/utils.h (created)
windows/runner/utils.cpp (created)
windows/runner/runner.exe.manifest (created)
windows/runner/CMakeLists.txt (created)
windows/runner/win32_window.h (created)
windows/runner/Runner.rc (created)
windows/runner/win32_window.cpp (created)
windows/runner/resources/app_icon.ico (created)
windows/runner/main.cpp (created)
windows/runner/resource.h (created)
windows/runner/flutter_window.h (created)
windows/flutter/CMakeLists.txt (created)
windows/.gitignore (created)
windows/CMakeLists.txt (created)
ios/Runner.xcworkspace/contents.xcworkspacedata (created)
ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (created)
ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings (created)
ios/Runner/Info.plist (created)
ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png (created)
ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png (created)
ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md (created)
ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json (created)
ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png (created)
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png (created)
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png (created)
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png (created)
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png (created)
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png (created)
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png (created)
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png (created)
ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json (created)
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png (created)
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png (created)
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png (created)
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png (created)
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png (created)
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png (created)
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png (created)
ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png (created)
ios/Runner/Base.lproj/LaunchScreen.storyboard (created)
ios/Runner/Base.lproj/Main.storyboard (created)
ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata (created)
ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (created)
ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings (created)
ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme (created)
ios/Flutter/Debug.xcconfig (created)
ios/Flutter/Release.xcconfig (created)
ios/Flutter/AppFrameworkInfo.plist (created)
ios/.gitignore (created)
getx_example.iml (created)
.gitignore (created)
web/favicon.png (created)
web/index.html (created)
web/manifest.json (created)
web/icons/Icon-maskable-512.png (created)
web/icons/Icon-192.png (created)
web/icons/Icon-maskable-192.png (created)
web/icons/Icon-512.png (created)
.metadata (created)
macos/Runner.xcworkspace/contents.xcworkspacedata (created)
macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (created)
macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png (created)
macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png (created)
macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png (created)
macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png (created)
macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png (created)
macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png (created)
macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json (created)
macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png (created)
macos/Runner/DebugProfile.entitlements (created)
macos/Runner/Base.lproj/MainMenu.xib (created)
macos/Runner/MainFlutterWindow.swift (created)
macos/Runner/Configs/Debug.xcconfig (created)
macos/Runner/Configs/Release.xcconfig (created)
macos/Runner/Configs/Warnings.xcconfig (created)
macos/Runner/Configs/AppInfo.xcconfig (created)
macos/Runner/AppDelegate.swift (created)
macos/Runner/Info.plist (created)
macos/Runner/Release.entitlements (created)
macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (created)
macos/Runner.xcodeproj/project.pbxproj (created)
macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme (created)
macos/Flutter/Flutter-Debug.xcconfig (created)
macos/Flutter/Flutter-Release.xcconfig (created)
macos/.gitignore (created)
ios/Runner/AppDelegate.h (created)
ios/Runner/main.m (created)
ios/Runner/AppDelegate.m (created)
ios/Runner.xcodeproj/project.pbxproj (created)
android/app/src/profile/AndroidManifest.xml (created)
android/app/src/main/res/mipmap-mdpi/ic_launcher.png (created)
android/app/src/main/res/mipmap-hdpi/ic_launcher.png (created)
android/app/src/main/res/drawable/launch_background.xml (created)
android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png (created)
android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png (created)
android/app/src/main/res/values-night/styles.xml (created)
android/app/src/main/res/values/styles.xml (created)
android/app/src/main/res/drawable-v21/launch_background.xml (created)
android/app/src/main/res/mipmap-xhdpi/ic_launcher.png (created)
android/app/src/main/AndroidManifest.xml (created)
android/app/src/debug/AndroidManifest.xml (created)
android/gradle/wrapper/gradle-wrapper.properties (created)
android/gradle.properties (created)
android/.gitignore (created)
android/settings.gradle (created)
android/app/build.gradle (created)
android/app/src/main/java/com/jimi/getx_example/MainActivity.java (created)
android/build.gradle (created)
android/getx_example_android.iml (created)
analysis_options.yaml (created)
.idea/runConfigurations/main_dart.xml (created)
.idea/libraries/Dart_SDK.xml (created)
.idea/libraries/KotlinJavaRuntime.xml (created)
.idea/modules.xml (created)
.idea/workspace.xml (created)
linux/main.cc (created)
linux/my_application.h (created)
linux/my_application.cc (created)
linux/flutter/CMakeLists.txt (created)
linux/.gitignore (created)
linux/CMakeLists.txt (created)
Wrote 129 files.
All done!
In order to run your application, type:
$ cd .
$ flutter run
Your application code is in ./lib/main.dart.
Running `flutter pub get` …
$ flutter pub get
Running "flutter pub get" in getx_example... 898ms
$ dart migrate --apply-changes --skip-import-check
Migrating /Users/jm/Desktop/Project/getx/getx_example
See https://dart.dev/go/null-safety-migration for a migration guide.
Analyzing project...
All sources appear to be already migrated. Nothing to do.
? + HandshakeException: Connection terminated during handshake
? File: analysis_options.yaml created successfully at path: analysis_options.yaml
--> 1) GetX Pattern (by Kauê)
2) CLEAN (by Arktekko)
Your lib folder is not empty. Are you sure you want to overwrite your application?
WARNING: This action is irreversible
--> 1) Yes!
2) No
? 'Package: get installed!
? File: main.dart created successfully at path: lib/main.dart
? File: home_controller.dart created successfully at path: ./lib/app/modules/home/controllers/home_controller.dart
? File: home_view.dart created successfully at path: ./lib/app/modules/home/views/home_view.dart
? File: home_binding.dart created successfully at path: ./lib/app/modules/home/bindings/home_binding.dart
? File: app_routes.dart created successfully at path: lib/app/routes/app_routes.dart
? File: app_pages.dart created successfully at path: lib/app/routes/app_pages.dart
? home route created successfully.
? Home page created successfully.
? GetX Pattern structure successfully generated.
Running `flutter pub get` …
$ flutter pub get
Running "flutter pub get" in getx_example... 968ms
Time: 53925 Milliseconds
如果能看到如上就證明通過(guò)Cli
創(chuàng)建工程成功了缭裆。
Cli創(chuàng)建頁(yè)面
第一種:Getx_pattern
我們可以通過(guò)get create page:login
來(lái)快速創(chuàng)建一個(gè)頁(yè)面,這個(gè)頁(yè)面有controller
寿烟、view
澈驼、binding
、routes
等配置筛武,結(jié)構(gòu)是Getx_pattern
JMdeMacBook-Pro:getx_example jm$ get create page:login
? File: login_controller.dart created successfully at path: ./lib/app/modules/login/controllers/login_controller.dart
? File: login_view.dart created successfully at path: ./lib/app/modules/login/views/login_view.dart
? File: login_binding.dart created successfully at path: ./lib/app/modules/login/bindings/login_binding.dart
? login route created successfully.
? Login page created successfully.
Time: 453 Milliseconds
JMdeMacBook-Pro:getx_example jm$
第二種:CLEAN
我們可以通過(guò)get create page:login
來(lái)快速創(chuàng)建一個(gè)頁(yè)面缝其,這個(gè)頁(yè)面有controller
、view
徘六、binding
内边、routes
等配置,結(jié)構(gòu)是CLEAN
硕噩。
JMdeMacBook-Pro:getx_example jm$ get create screen:name
? File: name.controller.dart created successfully at path: ./lib/presentation/name/controllers/name.controller.dart
? File: name.screen.dart created successfully at path: ./lib/presentation/name/name.screen.dart
? File: name.controller.binding.dart created successfully at path: lib/infrastructure/navigation/bindings/controllers/name.controller.binding.dart
? File: routes.dart created successfully at path: lib/infrastructure/navigation/routes.dart
? File: routes.dart created successfully at path: lib/infrastructure/navigation/routes.dart
? name route created successfully.
? File: navigation.dart created successfully at path: lib/infrastructure/navigation/navigation.dart
? Name navigation added successfully.
Time: 482 Milliseconds
Cli創(chuàng)建控制器
我們可以通過(guò)get create controller:login
來(lái)快速為已存在的page進(jìn)行創(chuàng)建controller
假残,并且他還重新了controller
的生命周期以及初始化方法。
get create controller:another on home
? File: another_controller.dart created successfully at path: ./lib/app/modules/home/controllers/another_controller.dart
? The Another has been added to binding at path: lib/app/modules/home/bindings/home_binding.dart'
Time: 387 Milliseconds
JMdeMacBook-Pro:getx_example jm$
Cli創(chuàng)建View
如果我們只是想單獨(dú)創(chuàng)建一個(gè)View
炉擅,那我們可以通過(guò)get create view:alogin on login
來(lái)進(jìn)行創(chuàng)建辉懒。
get create view:alogin on login
? File: alogin_view.dart created successfully at path: ./lib/app/modules/login/views/alogin_view.dart
Time: 378 Milliseconds
JMdeMacBook-Pro:getx_example jm$
Cli創(chuàng)建Provider
如果我們需要?jiǎng)?chuàng)建GetConnect
,那我們可以通過(guò)get create provider:blogin on login
來(lái)進(jìn)行創(chuàng)建谍失。
JMdeMacBook-Pro:getx_example jm$ get create provider:blogin on login
? File: blogin_provider.dart created successfully at path: ./lib/app/modules/login/providers/blogin_provider.dart
Time: 357 Milliseconds
JMdeMacBook-Pro:getx_example jm$
Cli創(chuàng)建國(guó)際化
如果我們需要對(duì)應(yīng)用進(jìn)行國(guó)際化配置眶俩,那我們可以通過(guò)get generate locales assets/locales
來(lái)進(jìn)行創(chuàng)建。
JMdeMacBook-Pro:getx_example jm$ get generate locales assets/locales
? File: locales.g.dart created successfully at path: lib/generated/locales.g.dart
? locale files generated successfully.
Time: 416 Milliseconds
JMdeMacBook-Pro:getx_example jm$
Cli通過(guò)json生成模型
第一種:不僅創(chuàng)建模型類(lèi)快鱼,還會(huì)提供Provider
如果我們需要對(duì)某個(gè)json文件生成模型颠印,那我們可以通過(guò)get generate model on home with assets/models/user.json
來(lái)進(jìn)行生成
JMdeMacBook-Pro:getx_example jm$ get generate model on home with assets/models/user.json
? File: user_model.dart created successfully at path: ./lib/app/modules/home/user_model.dart
? File: user_provider.dart created successfully at path: ./lib/app/modules/home/providers/user_provider.dart
Time: 499 Milliseconds
JMdeMacBook-Pro:getx_example jm$
第二種:只生成模型類(lèi)
JMdeMacBook-Pro:getx_example jm$ get generate model on login with assets/models/user.json --skipProvider
? File: user_model.dart created successfully at path: ./lib/app/modules/login/user_model.dart
Time: 408 Milliseconds
第三種:通過(guò)連接生成模型類(lèi)
JMdeMacBook-Pro:getx_example jm$ get generate model on home from "https://api.github.com/users/CpdnCristiano"
? Could not set the model name automatically, which name do you want to use? githubHome
? File: github_home_model.dart created successfully at path: ./lib/app/modules/home/github_home_model.dart
? File: github_home_provider.dart created successfully at path: ./lib/app/modules/home/providers/github_home_provider.dart
Time: 14033 Milliseconds
Cli安裝包(dependencies)
第一種:直接安裝最新版本
JMdeMacBook-Pro:getx_example jm$ get install dio
Installing package "dio" …
? 'Package: dio installed!
Running `flutter pub get` …
$ flutter pub get
Running "flutter pub get" in getx_example... 2,656ms
Time: 5815 Milliseconds
第二種:同時(shí)安裝多個(gè)包
JMdeMacBook-Pro:getx_example jm$ get install path dio
Installing package "path" …
? 'Package: path installed!
Installing package "dio" …
? 'Package: dio installed!
Running `flutter pub get` …
$ flutter pub get
Running "flutter pub get" in getx_example... 732ms
Time: 7146 Milliseconds
第三種:安裝自定版本的包
JMdeMacBook-Pro:getx_example jm$ get install prodiver:5.0.0
Installing package "prodiver" …
? 'Package: prodiver installed!
Cli安裝包(dev_dependencies)
我們可以通過(guò)get install flutter_launcher_icons --dev
安裝開(kāi)發(fā)時(shí)所依賴(lài)的包
JMdeMacBook-Pro:getx_example jm$ get install flutter_launcher_icons --dev
The [--dev] is not necessary
Installing package "flutter_launcher_icons" …
? 'Package: flutter_launcher_icons installed!
Cli卸載包
第一種:卸載某個(gè)安裝包
JMdeMacBook-Pro:getx_example jm$ get remove http
Removing package: "http"
Package: http is not installed in this application
Running `flutter pub get` …
$ flutter pub get
Running "flutter pub get" in getx_example... 772ms
Time: 2641 Milliseconds
第二種:同時(shí)卸載多個(gè)包
JMdeMacBook-Pro:getx_example jm$ get remove dio path
Removing package: "dio"
? Package: dio removed!
Removing package: "path"
? Package: path removed!
Running `flutter pub get` …
$ flutter pub get
Running "flutter pub get" in getx_example... 1,085ms
Time: 3142 Milliseconds
Cli更新腳手架
我們可以通過(guò)get update
對(duì)腳手架進(jìn)行更新
JMdeMacBook-Pro:getx_example jm$ get update
Latest version of get_cli already installed
Time: 3315 Milliseconds
Cli查看版本號(hào)
我們可以通過(guò)get -v
查看當(dāng)前腳手架的版本號(hào)
JMdeMacBook-Pro:getx_example jm$ get -v
?██████╗?███████╗████████╗?? ?█████╗?██╗??????██╗
██╔════╝?██╔════╝╚══██╔══╝? ?██╔══██╗██║??????██║
██║??██╗?█████╗?????██║???? ?██║??╚═╝██║??????██║
██║??╚██╗██╔══╝?????██║???? ?██║??██╗██║??????██║
╚██████╔╝███████╗???██║???? ?╚█████╔╝███████╗ ██║
?╚═════╝?╚══════╝???╚═╝???? ??╚════╝?╚══════╝ ╚═╝
Version: 1.6.0
Time: 148 Milliseconds
Cli幫助
當(dāng)我們忘記了命令的使用方式纲岭,我們可以通過(guò)get help
進(jìn)行查看幫助。
JMdeMacBook-Pro:getx_example jm$ get help
List available commands:
create:
controller: Generate controller
page: Use to generate pages
project: Use to generate new project
provider: Create a new Provider
screen: Generate new screen
view: Generate view
generate:
locales: Generate translation file from json files
model: generate Class model from json
help: Show this help
init: generate the chosen structure on an existing project:
install: Use to install a package in your project (dependencies):
remove: Use to remove a package in your project (dependencies):
sort: Sort imports and format dart files
update: To update GET_CLI
--version: Shows the current CLI version'
Time: 94 Milliseconds
總結(jié)
以上就是對(duì)Cli的腳手架命令的一個(gè)實(shí)踐和總結(jié)线罕,相對(duì)于自己手動(dòng)創(chuàng)建結(jié)構(gòu)止潮,用Cli
就可以很輕松的實(shí)現(xiàn)。