updateUserItem static method

Future<UserEntity?> updateUserItem(
  1. String? userId,
  2. UserProvider userProvider, {
  3. bool? localData,
  4. String? gender,
  5. String? age,
  6. String? country,
  7. List? likes,
  8. String? name,
  9. String? sign,
  10. String? headImage,
  11. int? rechargeCount,
})

更新本地数据库-只更新某些数据

Implementation

static Future<UserEntity?> updateUserItem(
    String? userId, UserProvider userProvider,
    {bool? localData,
    String? gender,
    String? age,
    String? country,
    List? likes,
    String? name,
    String? sign,
    String? headImage,
    int? rechargeCount}) async {
  var userDbProvider = UserInfoDbProvider();
  var userEntity = await userDbProvider.getUserInfo(userId);
  if (userEntity != null) {
    var change = false;
    if (localData != null) {
      if (userEntity.localData == null || userEntity.localData != localData) {
        userEntity.localData = localData;
        change = true;
      }
    }
    if (gender != null && userEntity.gender != gender) {
      userEntity.gender = gender;
      change = true;
    }
    if (age != null && userEntity.age != age) {
      userEntity.age = age;
      change = true;
    }
    if (country != null && userEntity.country != country) {
      userEntity.country = country;
      change = true;
    }
    if (likes != null) {
      if (userEntity.likes == null ||
          userEntity.likes!.length != likes.length) {
        userEntity.likes = likes;
        change = true;
      } else {
        for (int i = 0; i < likes.length; i++) {
          if (likes[i] != userEntity.likes![i]) {
            userEntity.likes = likes;
            change = true;
            break;
          }
        }
      }
    }
    if (name != null && userEntity.name != name) {
      userEntity.name = name;
      change = true;
    }
    if (headImage != null && userEntity.headImage != headImage) {
      userEntity.headImage = headImage;
      change = true;
    }
    if (rechargeCount != null && userEntity.rechargeCount != rechargeCount) {
      userEntity.rechargeCount = rechargeCount;
      change = true;
    }
    if (change) {
      userDbProvider.insert(
        userEntity.id,
        jsonEncode(
          userEntity.toJson(),
        ),
      );
      userProvider.setUserEntity(userEntity);
    }
  }
  return userEntity;
}