GetX Cli的使用

# 1. Get CLI安装

Get CLI 是转为Get X而生的脚手架工具,意在以最快速、简便的方法穿件、生成基于Get X库的Code。

# 1.1 Windows下安装

# 1.1.1 安装最新版本

flutter pub global activate get_cli

# 1.1.2 安装指定版本

在Windows下1.8会出现无法创建项目的问题,所以可以将版本将至1.6

flutter pub global activate get_cli 1.6.0

# 1.1.3 配置环境变量

# 1.2 MacOS下安装

# 1.2.1 安装

# 1.2.2 配置环境变量

# 1.3 卸载

flutter pub global deactivate get_cli

# 2. Get Cli 命令

# 2.1 get create project

在当前目录创建一个 Flutter 项目。

get create project


# 2.2 get create page

创建页面,页面包括 controller, view, 和 binding

get create page:user

# 2.3 get create controller

在指定文件夹创建新 controller。如下命令是在user目录下创建名为dialog的controller。

get create controller:dialog on user

与此同时,get cli会自动在user_binding.dart中追加新的controller依赖。

class UserBinding extends Bindings {
    
    void dependencies() {
        Get.lazyPut<DialogController>(
        () => DialogController(),
        );
        Get.lazyPut<UserController>(
        () => UserController(),
        );
    }
}
1
2
3
4
5
6
7
8
9
10
11

# 2.4 get create view

在指定文件夹创建新 view。如下命令是在user目录下创建名为dialog的view。

get create view:dialog on user

# 2.5 get create provider

在指定文件夹创建新 provider。 Provider是GetX 分层中的一部分,负责发出请求以及处理请求返回、请求错误等。 如下命令实现了在user目录下创建名为user的provider文件。

get create provider:user on user

当我们在IDE安装了Get X插件后,也可以通过快捷命令生成provider。如:

一种方式是基于继承GetConnect实现的网络请求:

  import 'dart:convert';

  const baseUrl = 'http://gerador-nomes.herokuapp.com/nomes/10';

  class Api extends GetConnect {
    // Get request
    Future<Response> getUser(int id) => get('http://youapi/users/id');
    // Post request
    Future<Response> postUser(Map data) =>
        post('http://youapi/users', body: data);
    // Post request with File
    Future<Response<CasesModel>> postCases(List<int> image) {
      final form = FormData({
        'file': MultipartFile(image, filename: 'avatar.png'),
        'otherFile': MultipartFile(image, filename: 'cover.png'),
        });
      return post('http://youapi/users/upload', form);
    }

    GetSocket userMessages() {
        return socket('https://yourapi/users/socket');
    }
  }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

通过继承GetConnect就能使用GET/POST/PUT/DELETE/SOCKET方法与你的Rest API或websockets通信。


另一种是继承第三方库Dio实现的网络请求:

  import 'dart:convert';
  import 'package:dio/dio.dart';
  import 'package:meta/meta.dart';

  const baseUrl = 'http://gerador-nomes.herokuapp.com/nomes/10';

  class MyApiClient {
    final Dio httpClient;
    MyApiClient({ this.httpClient});

    getAll() async {
      try {
        var response = await httpClient.get(baseUrl);
        if (response.statusCode == 200) {
          Map<String, dynamic> jsonResponse = json.decode(response.data);
          List<MyModel> listMyModel = jsonResponse['data'].map<MyModel>((map) {
            return MyModel.fromJson(map);
          }).toList();
          return listMyModel;
        } else
          print('erro -get');
      } catch (_) {}
    }
  }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

# 2.6 get generate model on 目录 with 模板(json)

生成 model 类。如下命令是基于assets/models/user.json文件,在user目录下生成model类。

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

{
  "address": "中国",
  "approvalStatus": 1,
  "createTime": "2018-08-12 15:23:13",
  "createUser": "ea19d2c43f174b7b81178323fe3bd1ca",
  "createUserName": "Guest",
  "createUsers": "",
  "email": "admin@apegeek.com",
  "flowId": "",
  "gender": "M",
  "grantData": "",
  "headImg": "",
  "id": "d8b36403af6f42f38664b3249e033741",
  "idNo": "610111198801011001",
  "idType": "11",
  "idTypeName": "身份证",
  "ignoreSelf": true,
  "isSuper": "Y",
  "lastLoginIp": "127.0.0.1",
  "lastLoginTime": "2018-08-12 15:23:13",
  "locked": 1,
  "loginName": "guest",
  "loginPass": "8e9bd5e636c5e4f013e5fc1c8bd8513898c1230cc947ba4f66cb43123886e80811f4cf94b8d4c6a9",
  "loginTimes": 0,
  "mobile": "13588888888",
  "nickname": "Guest",
  "orgs": "1@Apegeek",
  "pageNum": 1,
  "pageSize": 20,
  "realname": "guest",
  "remark": "",
  "role": "游客,参数设置,全量指令",
  "salt": "",
  "state": 1,
  "supper": false,
  "type": "0",
  "updateTime": "2022-07-13 07:24:02",
  "updateUser": "ea19d2c43fak4b7b81178323fe3bd1ca",
  "updateUserName": ""
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

# 2.7 get generate locales

生成国际化文件

get generate locales assets/locales

# 4. 插件

# 4.1 getx_template

Android Studio/Intellij插件,用于一键生成每个页面必需的文件夹、文件、模板代码等等。

# 4.2 GetX Snippets

Android Studio/Intellij、 VS Code扩展,通过输入少量字母,自动提示选择后,可生成常用的模板代码。

# 5. 集成

# 5.1 添加依赖

将 Get 添加到你的 pubspec.yaml 文件中,可以前往https://pub.flutter-io.cn/获取最新的GetX版本。

dependencies:
  get: ^4.6.5
1
2

# 5.2 导入Get

在dart文件中,通过import关键字导入get库。

import 'package:get/get.dart';
1

# 5.3 使用

  1. 在你的MaterialApp前添加 "Get",将其变成GetMaterialApp;
更新时间: 1/4/2023, 5:33:38 PM