remark_manager_model.dart 2.72 KB
import 'dart:async';

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/remark.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';

/**
 * 常用备注管理
 */
class RemarkManagerModel extends ChangeNotifier {
  List<Remark> remarks = []; //所有备注
  List<Remark?> ofenRemarks = []; //常用备注

  PageState pageState = PageState.Loading;

  //获取备注
  getRemarks(BuildContext context, Map<String, String?> params,
      {bool showPageLoading = false, bool selfDismiss = false}) async {
    if (showPageLoading) {
      pageState = PageState.Loading;
      notifyListeners();
    }
    try {
      BaseResp<List?> baseResp = await DioUtil().request<List>(
          context, Method.post, HttpUrl.get_custom_remark,
          data: params,
          showLoading: showPageLoading ? false : true,
          selfDismiss: selfDismiss);
      if (baseResp.code == Constant.status_success) {
        remarks = baseResp.data!.map<Remark>((value) {
          return Remark.fromJson(value);
        }).toList();
        ofenRemarks = [];
        for (Remark item in remarks) {
          if (item.oftenUse != '') {
            ofenRemarks.add(item);
          }
        }
        if (remarks.isEmpty) {
          pageState = PageState.Empty;
        } else {
          pageState = PageState.Success;
        }
        notifyListeners();
      }
    } catch (error) {
      print(error.toString());
      if (error is MyError) {
        switch (error.type) {
          case 1:
            pageState = PageState.ConnectivityError;
            break;
          case 2:
            pageState = PageState.ConnectivityTimeOut;
            break;
          default:
            pageState = PageState.ConnectivityError;
            break;
        }
      }
      notifyListeners();
    }
  }

  //添加备注
  Future addRemark(BuildContext context, Map<String, String?> params) async {
    try {
      BaseResp<dynamic> baseResp = await DioUtil().request<dynamic>(
          context, Method.post, HttpUrl.add_custom_remark,
          data: params, showLoading: false);
    } catch (error) {
      print(error.toString());
    }

    return;
  }

  //删除备注
  delRemark(BuildContext context, Map<String, String> params) async {
    try {
      BaseResp<dynamic> baseResp = await DioUtil().request<dynamic>(
          context, Method.post, HttpUrl.del_custom_remark,
          data: params, showLoading: false);
      if (baseResp.code == Constant.status_success) {}
    } catch (error) {
      print(error.toString());
    }
  }
}