Flutter http 优雅的处理@RquestParam参数
  MKubsKtBzXL1 2023年11月02日 45 0


文章目录

  • ​​一、Uri注意事项​​
  • ​​二、参数拼接工具类​​
  • ​​三、实例​​
  • ​​1.方法​​
  • ​​2.调用​​

一、Uri注意事项

新版本url不在是String类型需要进行转化,否则报错。
我在flutter{参数类型’String’不能分配给参数类型’Uri’}[关闭]中使用http包时遇到了这个问题

Uri.parse(你的请求地址(String))

二、参数拼接工具类

/// 参数处理小工具
/// @author: dingwen
/// @date: 2021/5/1
class ParamsUtil {
/// map to uri
static String mapToUri(Map map) {
int index = 0;
String uri = '';
map.forEach((key, value) {
if (index == 0) {
uri += "?" + '$key' + "=" + '$value';
} else if (index != map.length) {
uri += "&" + '$key' + "=" + '$value';
} else {
uri += '$key' + "=" + '$value';
}
index++;
});
return uri;
}
}

三、实例

1.方法

import 'dart:async';
import 'dart:convert';
import 'package:daily_score_mobile/model/student_info_model.dart';
import 'package:daily_score_mobile/model/student_model.dart';
import 'package:daily_score_mobile/util/params_util.dart';
import 'package:http/http.dart' as http;
import 'package:daily_score_mobile/constant/api_constant.dart';
import 'package:fluttertoast/fluttertoast.dart';

/// student 数据访问接口
/// @author: dingwen
/// @date: 2021/5/1
class StudentDao {
/// 登录
static Future<StudentModel> login({Map data}) async {
final response = await http.post(Uri.parse(login_uri),
headers: {"content-type": "application/json"},
body: jsonEncode(data)).catchError((onError){
Fluttertoast.showToast(msg: "服务器异常,请联系管理员",);
});
Utf8Decoder utf8decoder = Utf8Decoder(); // fix 中文乱码
var result = json.decode(utf8decoder.convert(response.bodyBytes));
if (result['code'] == 200) {
return StudentModel.fromJson(result['data']);
} else if (result['code'] == 400 || result['code'] == 600) {
Fluttertoast.showToast(msg: "登录失败,用户名或密码错误!",);
return null;
}else {Fluttertoast.showToast(msg: "服务器异常,请联系管理员",);
return null;
}
}
}

2.调用

/// 登录
Future<bool> login() async {
if (_account == null) {
Fluttertoast.showToast(msg: "账号不能为空",);
return Future.value(false);
}
if (_password == null) {
Fluttertoast.showToast(msg: "密码不能为空",);
return Future.value(false);
}
Map student = {"studentId": _account, "studentPassword": _password};
StudentModel studentModel = await StudentDao.login(data: student);
if (studentModel != null) {
PreferenceUtils.instance.saveString("studentId", studentModel.studentId);
return Future.value(true);
} else {
return Future.value(false);
}
}
}


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  b1UHV4WKBb2S   2023年11月13日   27   0   0 flutterDart
MKubsKtBzXL1