Flutter命令行工具插件get_cli的使用

发布于 1周前 作者 itying888 来自 Flutter

Flutter命令行工具插件get_cli的使用

1. 安装get_cli

要安装get_cli,请执行以下命令:

pub global activate get_cli

或者使用Flutter SDK中的Dart SDK:

flutter pub global activate get_cli

为了在命令行中使用get命令,请将以下路径添加到系统的PATH环境变量中:

[FlutterSDKInstallDir]\bin\cache\dart-sdk\bin

2. 创建Flutter项目

使用get create project命令可以在当前目录下创建一个新的Flutter项目。默认情况下,项目名称会取自当前文件夹的名称。你也可以指定项目名称:

get create project:my_project

如果项目名称包含空格,请使用引号包围名称:

get create project:"my cool project"

3. 初始化现有项目

使用get init命令可以为现有的Flutter项目生成选定的结构。请注意,此命令会覆盖lib文件夹中的所有文件,因此请谨慎使用。

get init

你可以选择两种结构之一:getx_patternclean

4. 创建页面(Page)

页面(Page)包括控制器、视图和绑定文件,并且会自动添加路由。推荐使用getx_pattern结构的用户使用此命令。

get create page:home

你还可以在另一个模块中创建页面:

get create page:name on other_module

5. 创建屏幕(Screen)

屏幕(Screen)与页面类似,但更适合使用clean结构的用户。

get create screen:home

6. 创建控制器(Controller)

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

get create controller:dialogcontroller on home

你还可以使用模板文件或URL创建控制器:

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() {}
}

7. 创建视图(View)

在特定文件夹中创建视图:

get create view:dialogview on home

8. 创建提供者(Provider)

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

get create provider:user on home

9. 生成本地化文件

assets/locales目录中生成语言文件。首先创建JSON格式的翻译文件,例如pt_BR.jsonen_US.json

{
  "buttons": {
    "login": "Entrar",
    "sign_in": "Cadastrar-se",
    "logout": "Sair",
    "sign_in_fb": "Entrar com o Facebook",
    "sign_in_google": "Entrar com o Google",
    "sign_in_apple": "Entrar com a Apple"
  }
}
{
  "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"
  }
}

然后运行以下命令生成本地化类:

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,
  ...
)

10. 生成模型类

assets/models/user.json中创建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;
  }
}

如果你不想生成提供者类,可以添加--skipProvider选项:

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

你还可以从URL生成模型类:

get generate model on home from "https://api.github.com/users/CpdnCristiano"

11. 管理依赖包

安装依赖包

安装单个依赖包:

get install camera

安装多个依赖包:

get install http path camera

安装指定版本的依赖包:

get install path:1.6.4

安装开发依赖包

安装开发依赖包:

get install flutter_launcher_icons --dev

移除依赖包

移除单个依赖包:

get remove http

移除多个依赖包:

get remove http path

12. 更新CLI

更新get_cli

get update

或者:

get upgrade

13. 查看CLI版本

查看当前get_cli的版本:

get -v

或者:

get -version

14. 获取帮助

获取命令的帮助信息:

get help

15. 配置文件类型分隔符

你可以通过在pubspec.yaml中添加以下配置来自定义文件名的分隔符:

get_cli:
  separator: "."

16. 配置Getx目录布局

如果你希望创建页面或屏幕时生成扁平化的文件结构,可以在pubspec.yaml中添加以下配置:

get_cli:
  sub_folder: false

17. 组织导入语句

使用get sort命令可以帮助你组织导入语句并格式化Dart文件。默认情况下,所有文件都会被重命名,如果你想跳过重命名,可以使用--skipRename标志:

get sort --skipRename

如果你更喜欢使用相对导入而不是项目导入,可以使用--relative选项:

get sort --relative

18. 国际化CLI

get_cli现在支持国际化。要将CLI翻译成你的语言,请按照以下步骤操作:

  1. translations文件夹中创建一个包含你语言的新JSON文件。
  2. 复制en.json文件中的键,并翻译相应的值。
  3. 提交PR。

19. 未来计划

  • 支持自定义模型
  • 添加单元测试
  • 改进生成的结构
  • 添加备份系统

示例项目

以下是一个完整的示例项目,展示了如何使用get_cli创建一个简单的Flutter应用:

  1. 创建项目

    get create project:my_app
    
  2. 初始化项目

    get init
    
  3. 创建主页

    get create page:home
    
  4. 创建登录页面

    get create page:login
    
  5. 创建用户模型

    assets/models/user.json中创建JSON文件:

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

    然后生成模型类:

    get generate model on home with assets/models/user.json
    
  6. 添加依赖包

    安装http包:

    get install http
    
  7. 生成本地化文件

    assets/locales中创建pt_BR.jsonen_US.json文件,然后生成本地化类:

    get generate locales assets/locales
    
  8. 启动应用

    打开main.dart文件,确保在GetMaterialApp中启用了多语言支持:

    import 'package:get/get.dart';
    import 'package:my_app/translations/app_translation.dart';
    
    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return GetMaterialApp(
          title: 'My App',
          translationsKeys: AppTranslation.translations,
          home: HomeView(),
        );
      }
    }
    

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

1 回复

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


当然,以下是如何在Flutter项目中使用get_cli命令行工具的示例和相关代码案例。get_cli 是一个强大的命令行工具,通常与 get 包一起使用,可以简化 Flutter 项目的依赖管理、构建脚本等任务。

安装 get_cli

首先,你需要全局安装 get_cli。你可以通过 Dart 的包管理工具 pub 来安装它:

dart pub global activate get_cli

安装完成后,你可以通过 get 命令来访问 get_cli 提供的功能。

初始化 Flutter 项目并使用 get_cli

  1. 创建一个新的 Flutter 项目(如果你还没有项目的话):

    flutter create my_flutter_app
    cd my_flutter_app
    
  2. get 包添加到你的 pubspec.yaml 文件中

    打开 pubspec.yaml 文件,并在 dependencies 部分添加 get

    dependencies:
      flutter:
        sdk: flutter
      get: ^4.0.0  # 请检查最新版本号
    

    然后运行以下命令来安装依赖:

    flutter pub get
    
  3. 使用 get_cli 初始化项目

    运行以下命令使用 get_cli 初始化项目,这将自动为你生成一些必要的文件,比如 controllersviewsmodels 等目录结构:

    get init
    

    该命令会询问你一些配置选项,你可以根据需要选择。

使用 get_cli 管理依赖和脚本

get_cli 提供了许多有用的命令来管理 Flutter 项目,以下是一些常用命令及其示例:

  1. 添加依赖

    使用 get add 命令添加一个新的依赖项,例如添加一个 provider 包:

    get add provider
    

    该命令会自动更新你的 pubspec.yaml 文件和 pubspec.lock 文件,并运行 flutter pub get

  2. 运行 Flutter 项目

    你可以使用 get run 命令来运行你的 Flutter 项目,这与 flutter run 命令类似:

    get run
    
  3. 生成项目模板

    get_cli 还可以帮助你生成常用的项目模板代码,例如一个新的页面控制器:

    get create page:Home
    

    这将生成一个名为 HomeController 的控制器文件和一个名为 home_view.dart 的视图文件,文件内容会包含一些基本模板代码。

示例代码结构

在使用 get init 后,你的项目结构可能会类似于以下结构:

my_flutter_app/
├── android/
├── ios/
├── lib/
│   ├── controllers/
│   │   └── example_controller.dart
│   ├── models/
│   ├── views/
│   │   └── home_view.dart
│   ├── main.dart
│   └── app_routes.dart  # 自动生成的路由文件
├── pubspec.lock
├── pubspec.yaml
└── README.md

示例代码

以下是一个简单的 HomeControllerhome_view.dart 的示例代码:

HomeController.dart

import 'package:get/get.dart';

class HomeController extends GetxController {
  var counter = 0.obs;

  void increment() {
    counter.value++;
  }
}

home_view.dart

import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../controllers/home_controller.dart';

class HomeView extends StatelessWidget {
  final HomeController controller = Get.put(HomeController());

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Home'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'You have pushed the button this many times:',
            ),
            Obx(() => Text(
              '${controller.counter}',
              style: Theme.of(context).textTheme.headline4,
            )),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: controller.increment,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ),
    );
  }
}

app_routes.dart

import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'views/home_view.dart';

class AppPages {
  static final routes = [
    GetPage(name: '/', page: () => HomeView()),
    // 添加更多路由
  ];
}

main.dart

import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'app_routes.dart';

void main() {
  Get.lazyPut(() => HomeController());
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return GetMaterialApp(
      title: 'Flutter Demo',
      initialRoute: '/',
      getPages: AppPages.routes,
    );
  }
}

通过上述步骤和代码,你可以轻松地在 Flutter 项目中使用 get_cli 命令行工具来管理和生成代码。

回到顶部