Flutter开发之——getX-GetxService(14)

一 概述

  • GetXService使用说明
  • 利用GetXService改写网络API示例项目
  • 参考及示例代码

二 GetXService

2.1 使用说明

  • GetXService用在runApp之前,用于启动App之前进行初始化工作
  • 可以分别定义APIService(网络)、DBService(数据库)、SharedPreferenceService(本地化存储)等
  • 在initServices中控制上述Service的执行顺序

2.2 如何使用GetXService(APIService)

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
class APIService extends GetxService{
Future<APIService> init()async{
Get.put(HomeProvider());
return this;
}
HomeProvider getHomeProvider(){
return Get.find<HomeProvider>();
}
@override
void onInit() {
// TODO: implement onInit
print('APIService--onInit');
super.onInit();
}
@override
void onReady() {
// TODO: implement onReady
print('APIService--onReady');
super.onReady();
}
@override
void onClose() {
// TODO: implement onClose
print('APIService--onClose');
super.onClose();
}
}

说明:

  • 定义类APIService继承GetxService
  • init方法,将HomeProvider(GetConnect)进行初始化
  • 定义获取HomeProvider的方法,便于APIService获取
  • 生命周期相关的方法:onInit()、onReady()、onClose()

2.3 initServices

1
2
3
4
5
Future<void> initServices() async {
print('starting services ...');
await Get.putAsync(() => APIService().init());//API
print('All services started...');
}

2.4 App中设置

1
2
3
4
5
6
7
Future<void> main() async{
await initServices();
runApp(GetMaterialApp(
themeMode: ThemeMode.light,
initialRoute: AppRoutes.main,
getPages: AppPages.routes));
}

三 利用GetXService改写网络API示例项目

3.1 网络API获取

之前

1
2
3
HomeProvider userProvider=Get.find();
Response response= await userProvider.getArticle(0);
//绑定HomeProvider

现在

1
Response response= await Get.find<APIService>().getHomeProvider().getArticle(0);

3.2 效果图

四 参考

  • Github-getx-GetxService官方文档
  • CSDN下载-参考的代码