GetX
状态管理
GetX包含很多功能,各种弹出widget、路由管理、国际化、Utils、状态管理等。
基于路由管理
1. 添加到项目中
1.1. 将此添加到pubspec.yaml文件中。
get: 4.1.4
1.2. 在命令行中运行
flutter packages get
1.3. 在MaterialApp前面加上 “Get”,就可以把它变成GetMaterialApp
GetMaterialApp( home: MyHome(),
)
2. 具体的路由使用场景:
2.1 导航到新的页面。
Get.to(NextScreen());
2.2 关闭SnackBars、Dialogs、BottomSheets或任何你通常会用Navigator.pop(context)关闭的东西。
Get.back();
2.3进入下一个页面,但没有返回上一个页面的选项(用于SplashScreens,登录页面等)。
Get.off(NextScreen());
2.4 进入下一个界面并取消之前的所有路由(在购物车、投票和测试中很有用)。
Get.offAll(NextScreen());
2.5 要导航到下一条路由,并在返回后立即接收或更新数据。
var data = await Get.to(Payment());
2.6 在另一个页面上,发送前一个路由的数据。并使用它,例:
Get.back(result: 'success');
if(data == 'success') madeAnything();
2.7 与标准导航的关系 , 只要把 Navigator(大写)改成 navigator(小写),就可以拥有标准导航的所有功能,而不需要使用context // 默认的Flutter导航
Navigator.of(context).push(context,MaterialPageRoute(builder: (BuildContext context) {return HomePage();},),
);
// 使用Flutter语法获得,而不需要context。
navigator.push(MaterialPageRoute(builder: (_) {return HomePage();},),
);
// get语法 (这要好得多)
Get.to(HomePage());
dio:http 请求库
dio
是一个强大的Dart
Http
请求库,支持Restful API、FormData
、拦截器、请求取消、Cookie
管理、文件上传/下载、超时、自定义适配器等…
1. 添加到项目中
1.1. 将此添加到pubspec.yaml文件中。
dio: ^4.0.6
dio_cookie_manager: ^2.0.0
cookie_jar: ^3.0.1
1.2. 在命令行中运行
flutter packages get
2.具体的使用
一个极简的示例:
import 'package:dio/dio.dart';
void getHttp() async {try {var response = await Dio().get('http://www.google.com');print(response);} catch (e) {print(e);}
}
项目中的使用:
config.dart
统一管理请求接口的
url
地址
// api地址前缀static String imApiUrl() {return 'https://xxxxxx.xxxxx.com/api/users';} // 接口列表
class Urls {static var register = "${Config.imApiUrl()}/register";static var login = "${Config.imApiUrl()}/login";static var getCode = "${Config.imApiUrl()}/getCode";static var verifiCode = "${Config.imApiUrl()}/verifiCode";static var setNewPwd = "${Config.imApiUrl()}/setNewPwd";
}
api_resp.dart
对接口返回的数据,进行统一数据类型校验
class ApiResp {int? code;String? msg;dynamic data;ApiResp.fromJson(Map<String, dynamic> map) {c