choose_table_model.dart 2.06 KB
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/tableOuter.dart';
import 'package:one_key/models/table_list.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:one_key/models/table.dart' as t;

class ChooseTableModel with ChangeNotifier {
  List<TableList> tableList = [];
  PageState pageState = PageState.Loading;

  //获取桌位数据
  Future<List<TableOuter>> getTableList(
      BuildContext context, Map<String, String> params,
      {isShowLoading = true}) async {
    if (isShowLoading) {
      pageState = PageState.Loading;
      notifyListeners();
    }
    BaseResp<List> baseResp = await DioUtil()
        .request<List>(context, Method.get, HttpUrl.table_list,
            data: params, showLoading: true)
        .catchError((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();
    });
    if (baseResp.code == Constant.status_success) {
      if ((baseResp.data[0] as List).isEmpty) {
        pageState = PageState.Empty;
        notifyListeners();
      } else {
        pageState = PageState.Success;
      }

      return (baseResp.data[0] as List).map((value) {
        TableOuter tableOuter = TableOuter();
        tableOuter.name = value["name"];
        tableOuter.list = (value["list"] as List).map((table) {
          return t.Table.fromJson(table as Map<String, dynamic>);
        }).toList();
        return tableOuter;
      }).toList();
    } else {
      pageState = PageState.ConnectivityError;
      notifyListeners();
    }
    return [];
  }
}