Flutter命令行工具增强插件get_cli_fork的使用

Flutter命令行工具增强插件get_cli_fork的使用

官方CLI用于GetX™框架。

安装

// To install:
pub global activate get_cli 
// (to use this add the following to system PATH: [FlutterSDKInstallDir]\bin\cache\dart-sdk\bin

flutter pub global activate get_cli

创建Flutter项目

// To create a flutter project in the current directory:
// Note: By default it will take the folder's name as project name
// You can name the project with `get create project:my_project`
// If the name has spaces use `get create project:"my cool project"`
get create project

初始化项目结构

// To generate the chosen structure on an existing project:
get init

创建页面

// To create a page:
// (Pages have controller, view, and binding)
// Note: you can use any name, ex: `get create page:login`
// Nota: use this option if the chosen structure was Getx_pattern
get create page:home

创建屏幕

// To create a screen
// (Screens have controller, view, and binding)
// Note: you can use any name, ex: `get screen page:login`
// Nota: use this option if the chosen structure was CLEAN (by Arktekko)
get create screen:home 

在特定文件夹中创建控制器

// To create a new controller in a specific folder:
// Note: you don't need to reference the folder,
// Getx will search automatically for the home folder
// and add your controller there.
get create controller:dialogcontroller on home

在特定文件夹中创建视图

// To create a new view in a specific folder:
// Note: you don't need to reference the folder,
// Getx will automatically search for the home folder
// and insert your view there.
get create view:dialogview on home

在特定文件夹中创建提供者

// To create a new provider in a specific folder:
get create provider:user on home

生成本地化文件

// To generate a localization file:
// Note: 'assets/locales' directory with your translation files in json format
get generate locales assets/locales

示例输入

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

运行命令

get generate locales assets/locales

输出

abstract class AppTranslation {

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

}
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 pt_BR = {
   'buttons_login': 'Entrar',
   'buttons_sign_in': 'Cadastrar-se',
   'buttons_logout': 'Sair',
   'buttons_sign_in_fb': 'Entrar com o Facebook',
   'buttons_sign_in_google': 'Entrar com o Google',
   'buttons_sign_in_apple': 'Entrar com a  Apple',
  };

}

现在只需在GetMaterialApp中添加以下行:

GetMaterialApp(
  ...
  translationsKeys: AppTranslation.translations,
  ...
)

生成模型示例

// To generate a class model:
// Note: 'assets/models/user.json' path of your template file in json format
// Note: on  == folder output file
// Getx will automatically search for the home folder
// and insert your class model there.
get generate model on home with assets/models/user.json

示例输入

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

运行命令

get generate model on home with assets/models/user.json

输出

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;
  }
}

更改文件类型分隔符

有一天,一位用户问我是否可以更改文件的最终名称。他发现使用my_controller_name.controller.dart比默认生成的my_controller_name_controller.dart更具可读性。考虑到像他这样的用户,我们添加了选项让你选择自己的分隔符,只需在你的pubspec.yaml中添加此信息。

示例

get_cli:
  separator: "."

配置Getx目录布局

当你创建一个页面或屏幕时,每个模块都会有绑定、控制器、视图子目录。

如果你更喜欢扁平的文件层次结构,在你的pubspec.yaml中添加以下行:

get_cli:
    sub_folder: false

更多关于Flutter命令行工具增强插件get_cli_fork的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter命令行工具增强插件get_cli_fork的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


get_cli_fork 是一个基于 get_cli 的增强版命令行工具,用于快速生成 Flutter 项目结构、页面、控制器、路由等。它可以帮助开发者更高效地开发 Flutter 应用,特别是在使用 GetX 状态管理库时。

安装 get_cli_fork

首先,你需要确保已经安装了 Flutter 和 Dart。然后,你可以通过以下命令全局安装 get_cli_fork

dart pub global activate get_cli_fork

安装完成后,你可以通过以下命令验证是否安装成功:

get_cli_fork --version

常用命令

1. 创建新项目

你可以使用 get_cli_fork 快速创建一个新的 Flutter 项目:

get_cli_fork create project:my_project

这将在当前目录下创建一个名为 my_project 的 Flutter 项目。

2. 生成页面

get_cli_fork 可以帮助你快速生成页面、控制器和绑定。例如,生成一个名为 home 的页面:

get_cli_fork generate page:home

这将在 lib/app/pages/home 目录下生成 home_page.darthome_controller.darthome_binding.dart 文件。

3. 生成控制器

如果你只需要生成一个控制器,可以使用以下命令:

get_cli_fork generate controller:home

这将在 lib/app/controllers 目录下生成 home_controller.dart 文件。

4. 生成模型

get_cli_fork 还可以帮助你生成模型类。例如,生成一个名为 user 的模型:

get_cli_fork generate model:user

这将在 lib/app/models 目录下生成 user_model.dart 文件。

5. 生成服务

生成一个服务类:

get_cli_fork generate service:api

这将在 lib/app/services 目录下生成 api_service.dart 文件。

6. 生成路由

get_cli_fork 还可以帮助你生成路由配置。例如,生成一个名为 app_routes.dart 的路由文件:

get_cli_fork generate route:app_routes

这将在 lib/app/routes 目录下生成 app_routes.dart 文件。

7. 生成测试

你可以使用 get_cli_fork 生成测试文件。例如,生成 home_page 的测试文件:

get_cli_fork generate test:home_page

这将在 test/app/pages/home 目录下生成 home_page_test.dart 文件。

其他功能

get_cli_fork 还提供了其他一些功能,例如:

  • 清理项目:清理项目中未使用的文件。

    get_cli_fork clean
    
  • 格式化代码:格式化项目中的 Dart 代码。

    get_cli_fork format
    
  • 运行测试:运行项目中的所有测试。

    get_cli_fork test
回到顶部