registerUser method

Future<User> registerUser(
  1. String? username,
  2. String? nickname,
  3. String? password,
  4. String? avatar,
  5. String? subDomain,
)

Implementation

Future<User> registerUser(String? username, String? nickname,
    String? password, String? avatar, String? subDomain) async {
  //
  Map<String, String> headers = {"Content-Type": "application/json"};
  var body = json.encode({
    "username": username,
    "nickname": nickname,
    "password": password,
    "avatar": avatar,
    "subDomain": subDomain,
    "client": client
  });
  //
  final initUrl = BytedeskUtils.getHostUri('/visitor/api/register/user');
  final initResponse =
      await httpClient.post(initUrl, headers: headers, body: body);
  //解决json解析中的乱码问题
  Utf8Decoder utf8decoder = const Utf8Decoder(); // fix 中文乱码
  //将string类型数据 转换为json类型的数据
  final responseJson =
      json.decode(utf8decoder.convert(initResponse.bodyBytes));
  debugPrint("registerUser:$responseJson");
  //
  int statusCode = responseJson['status_code'];
  if (statusCode == 200) {
    User user = User.fromJson(responseJson['data']);
    //
    SpUtil.putString(BytedeskConstants.uid, user.uid!);
    SpUtil.putString(BytedeskConstants.username, user.username!);
    SpUtil.putString(BytedeskConstants.password, password!);
    SpUtil.putString(BytedeskConstants.nickname, user.nickname!);
    SpUtil.putString(BytedeskConstants.avatar, user.avatar!);
    SpUtil.putString(BytedeskConstants.description, user.description!);
    SpUtil.putString(BytedeskConstants.subDomain, user.subDomain!);
    // 解析用户资料
    return user;
  } else {
    //
    SpUtil.putString(BytedeskConstants.uid, responseJson['data']);
    SpUtil.putString(
        BytedeskConstants.username, '${username!}@${subDomain!}');
    SpUtil.putString(BytedeskConstants.password, password!);
    SpUtil.putString(BytedeskConstants.nickname, nickname!);
    SpUtil.putString(BytedeskConstants.avatar, avatar!);
    SpUtil.putString(BytedeskConstants.description, "");
    SpUtil.putString(BytedeskConstants.subDomain, subDomain);
  }
  return const User();
}