contant_show_model.dart 3.1 KB
import 'package:contacts_service/contacts_service.dart';
import 'package:flutter/material.dart';
import 'package:one_key/constant/constant.dart';
import 'package:one_key/constant/error.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/models/user_history_entity.dart';
import 'package:one_key/net/base_resp.dart';
import 'package:one_key/net/dio_util.dart';
import 'package:one_key/net/http_url.dart';
import 'package:lpinyin/lpinyin.dart';

class ContantShowModel extends ChangeNotifier {
  PageState pageStateLeft = PageState.Loading;
  PageState pageStateRight = PageState.Loading;
  List<UserHistoryEntity> userHistorys = []; //历史录入(总)
  List<UserHistoryEntity> contacts = []; //手机通讯录(总)
  List<UserHistoryEntity> userHistorysShow = []; //历史录入展示
  List<UserHistoryEntity> contactsShow = []; //手机通讯录展示

  //获取历史录入
  getUserHistorys(BuildContext context, Map<String, String> params) async {
    BaseResp<List> baseResp = await DioUtil()
        .request<List>(context, Method.get, HttpUrl.get_reserve_user,
            data: params, showLoading: false)
        .catchError((error) {
      print(error.toString());
      if (error is MyError) {
        switch (error.type) {
          case 1:
            pageStateLeft = PageState.ConnectivityError;
            break;
          case 2:
            pageStateLeft = PageState.ConnectivityTimeOut;
            break;
          default:
            pageStateLeft = PageState.ConnectivityError;
            break;
        }
      }
      notifyListeners();
    });
    if (baseResp != null && baseResp.code == Constant.status_success) {
      userHistorys = baseResp.data.map<UserHistoryEntity>((value) {
        return UserHistoryEntity.fromJson(value);
      }).toList();
      if (userHistorys.length == 0) {
        pageStateLeft = PageState.Empty;
      } else {
        for (int i = 0; i < userHistorys.length; i++) {
          UserHistoryEntity item = userHistorys[i];
          item.pinyin = PinyinHelper.getPinyin(item.rname);
          userHistorys[i] = item;
        }
        userHistorysShow = userHistorys;
        pageStateLeft = PageState.Success;
      }
      notifyListeners();
    }
  }

  searchData(String key) {
    userHistorysShow = [];
    contactsShow = [];
    // for (int i = 0; i < userHistorys.length; i++) {

    //   String name = userHistorys[i].rname;
    //   String pinyin = userHistorys[i].pinyin;
    //   String phone = userHistorys[i].phone;
    //   if (name.contains(key) || pinyin.contains(key) || phone.contains(key)) {
    //     userHistorysShow.add(userHistorys[i]);
    //   }
    // }
    for (int i = 0; i < contacts.length; i++) {
      String name = contacts[i].rname;
      String pinyin = contacts[i].pinyin;
      String phone = contacts[i].phone;
      if (name.contains(key) || pinyin.contains(key) || phone.contains(key)) {
        contactsShow.add(contacts[i]);
      }
    }
    if (userHistorysShow.length == 0) {
      pageStateLeft = PageState.Empty;
    }
    if (contactsShow.length == 0) {
      pageStateRight = PageState.Empty;
    }
    notifyListeners();
  }
}