table_photo_manager_page.dart 7.9 KB
import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:flutter_screenutil/screenutil.dart';
import 'package:one_key/models/table_photo_model.dart';
import 'package:one_key/models/upload_img_model.dart';
import 'package:one_key/pages/online_check/img_picker_widget.dart';
import 'package:one_key/provider/table_photo_anager_provider.dart';
import 'package:one_key/provider/upload_img_provider.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/route/navigator_util.dart';
import 'package:one_key/utils/upload_image_util.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/round_button.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:provider/provider.dart';

class TablePhotoManagerPage extends StatefulWidget {
  final String tid;
  final String tname;
  TablePhotoManagerPage({Key key, this.tid, this.tname}) : super(key: key);

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

class _TablePhotoManagerPageState extends State<TablePhotoManagerPage> {
  ScrollController _controller = ScrollController();
  UploadImageProvider _uploadImageProvider;
  TablePhotoManagerModel _tablePhotoManagerModel;

  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addPostFrameCallback((_) {
      _getTablePhoto(context);
      _getQiniuInfo();
    });
  }

  ///获取七牛云token
  ///
  _getQiniuInfo() async {
    await _uploadImageProvider.getQiniuInfo(context, {});
  }

  ///设置桌子图片
  ///
  _setTablePhoto(BuildContext context, List tablePhoto) async {
    Map<String, String> params = {
      "sellerid": Provider.of<UserModel>(context, listen: false).user.sellerid,
      "tableid": widget.tid,
      "photoList": jsonEncode(tablePhoto)
    };
    print(_uploadImageProvider.tableImageList);
    List<TablePhotoSunModel> tablePhotoList =
        await _tablePhotoManagerModel.setTablePhoto(context, params);
    if (tablePhotoList.length > 0) {
      //已经进来,上传过图片
      for (int i = 0; i < tablePhotoList.length; i++) {
        for (int j = 0; j < _uploadImageProvider.tableImageList.length; j++) {
          if (_uploadImageProvider.tableImageList[j].qiniuUrl ==
              tablePhotoList[i].url) {
            _uploadImageProvider.tableImageList[j].isUpload = true;
            _uploadImageProvider.tableImageList[j].photoID =
                tablePhotoList[i].id;
          }
        }
      }
    }

    print(_uploadImageProvider.tableImageList);
    _uploadImageProvider.notifyListeners();
  }

  ///获取桌位图片
  _getTablePhoto(BuildContext context) async {
    Map<String, String> params = {
      "sellerid": Provider.of<UserModel>(context, listen: false).user.sellerid,
      "tableid": widget.tid,
    };
    List<TablePhotoSunModel> tablePhotoList =
        await _tablePhotoManagerModel.getTablePhoto(context, params);
    if (tablePhotoList.length > 0) {
      print(_uploadImageProvider.tableImageList);
      for (int i = 0; i < tablePhotoList.length; i++) {
        UploadImgModel model = UploadImgModel();
        model.qiniuUrl = tablePhotoList[i].url;
        model.isUpload = true;
        model.photoID = tablePhotoList[i].id;
        model.process = 1;
        _uploadImageProvider.tableImageList.add(model);
      }
      _uploadImageProvider.notifyListeners();
    }
  }

  @override
  void dispose() {
    super.dispose();
    _uploadImageProvider.tableImageList = [];
  }

  @override
  Widget build(BuildContext context) {
    print(widget.tid);
    _uploadImageProvider =
        Provider.of<UploadImageProvider>(context, listen: true);
    _tablePhotoManagerModel =
        Provider.of<TablePhotoManagerModel>(context, listen: true);
    return Scaffold(
        backgroundColor: Colors.white,
        appBar: SystemAppBar(
          '照片管理',
          onTap: () {
            Navigator.pop(context);
          },
        ),
        body: InkWell(
            onTap: () {
              FocusScope.of(context).requestFocus(FocusNode()); //点击空白处隐藏键盘
            },
            child: Container(
                padding: EdgeInsets.symmetric(
                  horizontal: ScreenUtil().setWidth(40),
                ),
                child: Column(children: [
                  Container(
                      decoration: BoxDecoration(
                          border: Border(
                              bottom: BorderSide(
                                  width: ScreenUtil().setWidth(2),
                                  color: MyColours.color_f5f5f5))),
                      height: ScreenUtil().setWidth(100),
                      child: Row(
                        mainAxisAlignment: MainAxisAlignment.spaceBetween,
                        children: [
                          Text('当前桌位:${widget.tname}',
                              style: TextStyle(
                                  color: MyColours.color_333333,
                                  fontSize: ScreenUtil().setSp(32),
                                  fontWeight: FontWeight.bold)),
                          Text('切换桌位',
                              style: TextStyle(
                                  color: MyColours.color_199095,
                                  fontSize: ScreenUtil().setSp(32))),
                        ],
                      )),
                  Expanded(
                      child: SingleChildScrollView(
                          controller: _controller,
                          child: Column(
                              crossAxisAlignment: CrossAxisAlignment.start,
                              children: [
                                VEmptyView(60),
                                Consumer<UploadImageProvider>(
                                    builder: (context, model, _) {
                                  return ImgPickerWidget(
                                    scrollController: _controller,
                                    model: model,
                                    maxImageNumber: 5,
                                    uploadType: UploadType.TableManagerType,
                                    callbackDelete: () {
                                      //调用删除桌子图片接口
                                    },
                                  );
                                }),
                              ]))),
                  RoundButton(
                    text: '确定上传',
                    gradientStart: MyColours.color_199095,
                    gradientEnd: MyColours.color_199095,
                    // borderColor: MyColours.color_999999,
                    radius: ScreenUtil().setWidth(10),
                    fontSize: 34,
                    height: ScreenUtil().setWidth(80),
                    isBold: false,
                    onPressed: () {
                      for (UploadImgModel item
                          in _uploadImageProvider.tableImageList) {
                        if (item.process < 1) {
                          Utils.showToast('正在上传图片,请稍等');
                          return;
                        }
                      }
                      //接口,和桌子绑定
                      List imageQiniuUrlList = [];
                      for (int i = 0;
                          i < _uploadImageProvider.tableImageList.length;
                          i++) {
                        if (!_uploadImageProvider.tableImageList[i].isUpload) {
                          imageQiniuUrlList.add({
                            "url":
                                _uploadImageProvider.tableImageList[i].qiniuUrl
                          });
                        }
                      }
                      _setTablePhoto(context, imageQiniuUrlList);
                    },
                  )
                ]))));
  }
}

//