contant_left_page.dart 2.77 KB

import 'package:flutter/material.dart';
import 'package:flutter_easyrefresh/easy_refresh.dart';

import 'package:one_key/constant/state.dart';

import 'package:one_key/pages/my/contant_item_page.dart';
import 'package:one_key/provider/contant_show_model.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/utils/dialog_util.dart';

import 'package:one_key/widgets/page_exception.dart';

import 'package:provider/provider.dart';

class ContantLeftPage extends StatefulWidget {
  ContantLeftPage({Key? key}) : super(key: key);

  @override
  _ContantLeftPageState createState() => _ContantLeftPageState();
}

class _ContantLeftPageState extends State<ContantLeftPage> {
  EasyRefreshController? _controller;
  ContantShowModel? contantShowModel;

  @override
  void initState() {
    super.initState();
    _controller = EasyRefreshController();

    WidgetsBinding.instance.addPostFrameCallback((_) {
      _getContantData();
    });
  }

  _getContantData() async {
    Map<String, String?> params = {
      "sid": Provider.of<UserModel>(context, listen: false).user!.sellerid,
    };
    await contantShowModel!.getUserHistorys(context, params);
    await contantShowModel!.searchData(contantShowModel!.controller.text);
  }

  @override
  Widget build(BuildContext context) {
    contantShowModel = Provider.of<ContantShowModel>(context, listen: true);
    return Consumer<ContantShowModel>(
      builder: (context, model, _) {
        if (model.pageStateLeft != PageState.Success) {
          return ExceptionPage(
            pageState: model.pageStateLeft,
            callback: () {
              model.pageStateLeft = PageState.Loading;
              model.notifyListeners();
              _getContantData();
            },
            emptyMsg: "暂时没有联系人哦",
            emptyImg: "empty_search",
            showMsg: "加载中,请稍候...",
          );
        } else {
          return ListView.builder(
              itemCount: model.userHistorysShow.length,
              itemBuilder: (BuildContext context, int index) {
                String? phone = model.userHistorysShow[index].phone == null ||
                        model.userHistorysShow[index].phone == ''
                    ? ''
                    : model.userHistorysShow[index].phone;
                return ContantItemPage(
                  onTap: () {
                    if (model.userHistorysShow[index].phone != null &&
                        model.userHistorysShow[index].phone != '') {
                      DialogUtil.goPhone(model.userHistorysShow[index].phone);
                    }
                  },
                  index: index,
                  model: contantShowModel,
                  data: model.userHistorysShow,
                );
              });
        }
      },
    );
  }
}