get_cli安装及使用

2,153 阅读2分钟

git地址
github.com/jonataslaw/…

安装步骤

第一步 安装

#执行完成后会提示配置环境变量的路径
flutter pub global activate get_cli
FengzwdeMacBook-Pro:~ fengzw$ flutter pub global activate get_cli

Running "flutter pub get" in flutter_tools...                       9.8s
Resolving dependencies...
+ _fe_analyzer_shared 33.0.0
...
...
Downloading win32 2.3.3...

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 shells config file (.bashrc, .bash_profile, etc.):



  'export PATH="$PATH":"$HOME/.pub-cache/bin"'



Activated get_cli 1.7.1.

第二步 配置环境变量

1.根目录找到  .bash_profile 文件 (command + shift + .  可以快捷切换显示隐藏文件)

2.编辑 bash_profile 添加 export PATH="$PATH":"$HOME/.pub-cache/bin"

3.执行 source /Users/fengzw/.bash_profile 使变量生效

4.get --version 测试是否安装成功

image.png

image.png

image.png





使用步骤

功能命令备注
新建项目get create project新建一个项目,执行期间会选择几个属性,一路下去就行了
初始化get init新建项目里也会执行这步,清空lib文件夹内容,填充为初始的目录结构
创建页面get create page:页面名字会创建view, controller ,binding 和 routes
创建控制器get create controller:test on folder指定文件夹不用写完整路径末级名字就行
创建控制器get create controller:auth with xx.dart / 'url' on folder用模版或者url创建控制器
创建viewget create view:name on folder创建view
国际化get generate locales assets/locales需要在指定目录创建对应json文件
创建实体类get generate model on home with assets/models/user.json需要在指定目录创建对应json文件

新建项目

#cd到目标目录执行
get create project

image.png

模版创建控制器

#模版文件创建
get create controller:auth with examples/authcontroller.dart on your_folder

#url创建
get create controller:auth with 'https://raw.githubusercontent.com/jonataslaw/get_cli/master/samples_file/controller.dart.example' on your_folder

输入:模版文件

@import

class @controller extends GetxController {
  final  email = ''.obs;
  final  password = ''.obs;
  void login() {
  }

}

输出:生成文件

import 'package:get/get.dart';

class AuthController extends GetxController {
  final email = ''.obs;
  final password = ''.obs;
  void login() {}
}

国际化

#在 assets/locales 目录创建 json 格式的语言文件
get generate locales assets/locales
//生成后,需要在GetMaterialApp中配置
GetMaterialApp(
    ...
    translationsKeys: AppTranslation.translations,
    ...
)

zh_CN.json

{
  "buttons": {
    "login": "登录",
    "sign_in": "注册",
    "logout": "注销",
    "sign_in_fb": "用 Facebook 登录",
    "sign_in_google": "用 Google 登录",
    "sign_in_apple": "用 Apple 登录"
  }
}

en_US.json

{
  "buttons": {
    "login": "Login",
    "sign_in": "Sign-in",
    "logout": "Logout",
    "sign_in_fb": "Sign-in with Facebook",
    "sign_in_google": "Sign-in with Google",
    "sign_in_apple": "Sign-in with Apple"
  }
}

生成类

abstract class AppTranslation {

  static Map<String, Map<String, String>> translations = {
    'en_US' : Locales.en_US,
    'zh_CN' : Locales.zh_CN,
  };

}
abstract class LocaleKeys {
  static const buttons_login = 'buttons_login';
  static const buttons_sign_in = 'buttons_sign_in';
  static const buttons_logout = 'buttons_logout';
  static const buttons_sign_in_fb = 'buttons_sign_in_fb';
  static const buttons_sign_in_google = 'buttons_sign_in_google';
  static const buttons_sign_in_apple = 'buttons_sign_in_apple';
}

abstract class Locales {

  static const en_US = {
   'buttons_login': 'Login',
   'buttons_sign_in': 'Sign-in',
   'buttons_logout': 'Logout',
   'buttons_sign_in_fb': 'Sign-in with Facebook',
   'buttons_sign_in_google': 'Sign-in with Google',
   'buttons_sign_in_apple': 'Sign-in with Apple',
  };
  static const zh_CN = {
   'buttons_login': 'Entrar',
   'buttons_sign_in': 'Cadastrar-se',
   'buttons_logout': 'Sair',
   'buttons_sign_in_fb': '用 Facebook 登录',
   'buttons_sign_in_google': '用 Google 登录',
   'buttons_sign_in_apple': '用 Apple 登录',
  };

}

生成model实体类

#创建json model 文件assets/models/user.json
get generate model on home with assets/models/user.json

创建json文件

{
  "name": "",
  "age": 0,
  "friends": ["", ""]
}

生成类

class User {
  String name;
  int age;
  List<String> friends;

  User({this.name, this.age, this.friends});

  User.fromJson(Map<String, dynamic> json) {
    name = json['name'];
    age = json['age'];
    friends = json['friends'].cast<String>();
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['name'] = this.name;
    data['age'] = this.age;
    data['friends'] = this.friends;
    return data;
  }
}