Skip to content
  • P
    Projects
  • G
    Groups
  • S
    Snippets
  • Help

杨树贤 / kefu_server

  • This project
    • Loading...
  • Sign in
Go to a project
  • Project
  • Repository
  • Issues 0
  • Merge Requests 0
  • Pipelines
  • Wiki
  • Snippets
  • Settings
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • Files
  • Commits
  • Branches
  • Tags
  • Contributors
  • Graph
  • Compare
  • Charts
Find file
Normal viewHistoryPermalink
Switch branch/tag
  • kefu_server
  • ui
  • kefu_workbench
  • lib
  • provider
  • admin.dart
admin.dart 3.57 KB
Edit
chenxianqi's avatar
增加kefu_workbench
a18da124
 
chenxianqi committed 5 years ago
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
import 'package:dio/dio.dart';

import '../core_flutter.dart';

class AdminProvide with ChangeNotifier {

  AdminService adminService = AdminService.getInstance();

  static AdminProvide instance;

   // 单例
  static AdminProvide getInstance() {
    if (instance != null) {
      return instance;
    }
    instance = AdminProvide();
    return instance;
  }

  AdminProvide(){
    scrollController = ScrollController();
    searchTextEditingController = TextEditingController();
    getAdmins();
    // 监听滚动
    scrollController?.addListener(() => _onScrollViewControllerAddListener());
  }

  int pageOn = 0;
  int pageSize = 25;
  bool isLoadEnd = false;
  bool isLoading = false;
  String keyword = "";
  ScrollController scrollController;
  TextEditingController searchTextEditingController;
  List<AdminModel> admins = [];
  int usersTotal = 0;

  // 监听滚动条
  void _onScrollViewControllerAddListener() async{
    try {
      ScrollPosition position = scrollController.position;
      if (position.pixels + 10.0 > position.maxScrollExtent &&
          !isLoadEnd && !isLoading) {
        // 判断网络
        if (!await checkNetWork()) {
          UX.showToast('您的网络异常,请检查您的网络!', position: ToastPosition.top);
          return;
        }
        getAdmins();
      }
    }catch(e){
      printf(e);
    }
  }
  

  /// 获取列表数据
  Future<void> getAdmins() async{
    if(isLoadEnd) return;
    pageOn = pageOn +1;
    isLoading = true;
    notifyListeners();
    Response response = await adminService.getAdmins(pageOn: pageOn, pageSize: pageSize, keyword: keyword);
    isLoading = false;
    notifyListeners();
    if (response.data["code"] == 200) {
      List<AdminModel> _admins= (response.data["data"]['list'] as List).map((i) => AdminModel.fromJson(i)).toList();
      usersTotal = response.data["data"]['total'];
      if(_admins.length < pageSize){
        isLoadEnd = true;
      }
      if(pageOn > 1){
        admins.addAll(_admins);
      }else{
        admins = _admins;
      }
      notifyListeners();
    } else {
      UX.showToast("${response.data["message"]}");
    }
  }

  /// 更新单个数据
  Future<void> getUser(int id) async{
    Response response = await adminService.getItem(id: id);
    if (response.data["code"] == 200) {
      AdminModel _admin = AdminModel.fromJson(response.data["data"]);
      int index = admins.indexWhere((k) => k.id == id);
      if(index != null){
        admins[index] = _admin;
        notifyListeners();
      }
    }
  }
  /// 找出一个
  AdminModel getItem(int id){
    return admins.firstWhere((k) => k.id == id);
  }

  /// 删除单个数据
  void deleteItem(int id){
    usersTotal--;
    admins.removeWhere((i) => i.id == id);
  }

  // search
  void onSearch() async{
    pageOn = 0;
    keyword = searchTextEditingController.value.text.trim();
    isLoadEnd = false;
    notifyListeners();
    await getAdmins();
  }

  // onRefresh
  Future<bool> onRefresh() async{
    pageOn = 0;
    keyword = "";
    isLoadEnd = false;
    searchTextEditingController.clear();
    notifyListeners();
    await getAdmins();
    UX.showToast("刷新成功", position: ToastPosition.top);
    return true;
  }


  /// add
  void goAdd(BuildContext context) async{
    Navigator.pushNamed(context, "/admin_add").then((isSuccess){
      if(isSuccess == true){
        pageOn = 0;
        isLoadEnd = false;
        notifyListeners();
        getAdmins();
      }
    });
  }

  @override
  void dispose() {
    instance = null;
    scrollController?.dispose();
    searchTextEditingController?.dispose();
    super.dispose();
  }

  
}