# 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(),
);
}
}
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');
}
}
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 (_) {}
}
}
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": ""
}
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
2
# 5.2 导入Get
在dart文件中,通过import关键字导入get库。
import 'package:get/get.dart';
# 5.3 使用
- 在你的MaterialApp前添加 "Get",将其变成GetMaterialApp;