对于访问接口,分的细可以分为page(接收访问值并渲染页面)、model(处理数据)、entity(实体类)、api(访问接口)
首先需要创建一个实体,我们快速创建,其中内容为正确返回格式
entity已经创建好,那么可以先写model
class RestPasswordViewModel extends BaseModel{
//变量
String _UserErrorText=null;
RestPasswordViewModel({@required ApiUtil api}) : super(api: api);
//方法
Future<ResetPasswordEntity> reset_password(String username) async {
setState(ViewState.Busy);
//api中的方法
ResetPasswordEntity _resetPassword= await api.resetPassword(username);
setState(ViewState.Idle);
return _resetPassword;
}
//方法
void checkUserName(String text){
if(text.isEmpty) {
_UserErrorText = "This field is required.";
} else {
_UserErrorText = null;
}
notifyListeners();
}
//需要放出去,界面才能使用
String get userErrorText => _UserErrorText;
}
其中api.resetPassword()还未写,所以需要在api中添加resetPassword方法
Future<ResetPasswordEntity> resetPassword(String username) async {
try {
Map<String, dynamic> map = Map();
map["userName"] = username;
dio.options.contentType = "application/json";
//请求路径AccountApi.resetPassword,参数data
Response response = await dio.post(AccountApi.resetPassword, data: map);
//自动封装成entityJSON对象
ResetPasswordEntity data = ResetPasswordEntity.fromJson(response.data);
print(data.toJson());//打印
return data;
} on DioError catch (err) {
Log.e(err.message);
throw err;
}
}
底层已经完成,那么就是在界面上的使用了
class forgot_pwd_View extends StatefulWidget {
@override
_forgot_pwd_ViewStat