Flutter高仿微信-第59篇-同步数据

 Flutter高仿微信系列共59篇,从Flutter客户端、Kotlin客户端、Web服务器、数据库表结构、Xmpp即时通讯服务器、视频通话服务器、腾讯云服务器全面讲解。

 详情请查看

实现代码:

//服务器同步数据
Future<bool> syncFirst(String account, String packageName) async {
  Response result = await HttpUtils.getInstance().syncFirst(account, packageName);
  LogUtils.d("syncFirst返回数据:${result.toString()}");
  final responseResult = jsonDecode(result.toString());
  final baseResult = BaseResult.fromJson(responseResult);
  //LogUtils.d("syncFirst返回baseResult数据:${baseResult}");
  final syncFirstJson = jsonDecode(baseResult.data.toString());
  SyncFirstBean syncFirstBean = SyncFirstBean.fromJson(syncFirstJson);
  List<UserBean> syncUser = syncFirstBean.syncUser;
  List<ContactsBean> syncContacts = syncFirstBean.syncContacts;
  List<ChatBean> syncChat = syncFirstBean.syncChat;
  List<GroupBean> syncGroup = syncFirstBean.syncGroup;
  List<GroupUserBean> syncGroupUser = syncFirstBean.syncGroupUser;

  processSyncUser(syncUser);
  processSyncContact(syncContacts);
  processSyncChat(syncChat);
  processSyncGroup(syncGroup);
  processSyncGroupUser(syncGroupUser);
  return true;
}

//处理登录账户
void processSyncUser(List<UserBean> syncUser) async{
  List<UserBean> resultUserList = [];
  for(int i = 0; i < syncUser.length; i++){
    UserBean userBean = syncUser[i];
    //LogUtils.d("第一次同步用户:${userBean.account}, ${userBean.nickName} , ${userBean.address},  ${userBean.note}");
    UserBean? localUserBean = await userDao?.findUserByAccount(userBean.account!);
    if(localUserBean == null){
      resultUserList.add(userBean);
    }
  }
  userDao?.insertUserList(resultUserList);
}

//处理联系人
void processSyncContact(List<ContactsBean> syncContacts) async{
  /*syncContacts.forEach((contactsBean) {
    LogUtils.d("第一次同步联系人:${contactsBean.fromAccount}, ${contactsBean.toAccount} , ${contactsBean.type}");
  });*/

  List<ContactsBean> resultContactsList = [];
  for(int i = 0; i < syncContacts.length; i++){
    ContactsBean contactsBean = syncContacts[i];
    ContactsBean? localContactsBean = await contactsDao?.findContactByFromOrToAccount(contactsBean.fromAccount??"", contactsBean.toAccount??"");
    //如果已经存在联系人, 不需要重复插入
    if(localContactsBean == null){
      resultContactsList.add(contactsBean);
    }
  }

  contactsDao?.insertContactList(resultContactsList);
}

//处理聊天信息
void processSyncChat(List<ChatBean> syncChat){
  /*syncChat.forEach((chatBean) {
    LogUtils.d("第一次同步聊天信息:${chatBean.fromAccount}, ${chatBean.toAccount} ${chatBean.content}");
  });*/
  ChatDao? chatDao = DBUtils.getInstance().getDatabase()?.chatDao;
  chatDao?.insertChatList(syncChat);
}

//处理群名信息
void processSyncGroup(List<GroupBean> syncGroup){
  GroupRepository.getInstance().insertGroupList(syncGroup);
}

//处理群成员信息
void processSyncGroupUser(List<GroupUserBean> syncGroupUser){
  GroupUserRepository.getInstance().insertGroupUserList(syncGroupUser);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

六毛六66

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值