import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:city_pickers/city_pickers.dart'; import 'package:flutter_picker/flutter_picker.dart'; import 'dart:async'; import 'send_express_page/order_detail_page.dart'; import '../util/util.dart'; import '../util/api.dart'; import '../util/models.dart'; import '../showAlert.dart'; import '../send_Dialog.dart'; import '../util/session.dart'; import '../showLineModal.dart'; import '../util/bluetooth_utils.dart'; class SendExpressPage extends StatefulWidget { final Widget child; SendExpressPage({ Key key, this.child }): super(key: key); _SendExpressPageState createState() => _SendExpressPageState(); } class _SendExpressPageState extends State < SendExpressPage > with AutomaticKeepAliveClientMixin { ScrollController _scrollController = ScrollController(); //组件自用字段----------------------------- GlobalKey _sendPhoneKey = GlobalKey(); GlobalKey _getPhoneKey = GlobalKey(); GlobalKey _sendCompanyCodeKey = GlobalKey(); GlobalKey _sendCompanyNameKey = GlobalKey(); GlobalKey _getCompanyNameKey = GlobalKey(); double tipWidth = 0; double tipHeight = 0; double tipPosX = 0; double tipPosY = 0; bool tipStatus = true; bool lineModalStatus = false; bool submitStatus = true; List < LikePhoneList > likePhoneList = []; var timer; bool sendPhoneOrGetPhoneTab = true; //区分电话提示层点击时填入发件信息或手机信息的标记 TextEditingController sendCompanyPhoneController = TextEditingController(); TextEditingController sendCompanyCodeController = TextEditingController(); TextEditingController sendCompanyNameController = TextEditingController(); TextEditingController receiptCompanyPhoneController = TextEditingController(); TextEditingController receiptCompanyNameController = TextEditingController(); TextEditingController sendCompanyAddressController = TextEditingController(); TextEditingController receiptCompanyAddressController = TextEditingController(); TextEditingController bankCardController = TextEditingController(); TextEditingController bankNameController = TextEditingController(); TextEditingController openBankNameController = TextEditingController(); TextEditingController openBankPhoneController = TextEditingController(); TextEditingController goodsController = TextEditingController(); TextEditingController goodsQuantityController = TextEditingController(); TextEditingController goodsFreightController = TextEditingController(); TextEditingController goodsAgencyFundController = TextEditingController(); TextEditingController goodsPriceProtectionController = TextEditingController(); TextEditingController goodsWeightController = TextEditingController(); TextEditingController memoController = TextEditingController(); FocusNode bankCardFocusNode = FocusNode(); List < dynamic > goodsCateGoryList = []; List < dynamic > goodsPackageList = []; //请求字段------------------------- String lineId = '-1';//收件公司匹配的线路id String sendCompanyId = '0'; //寄件公司Id String sendCompanyName = ''; //寄件公司名称 不能为空 String sendCompanyPhone = ''; //寄件公司电话 不能为空 String sendCompanyCode = ''; //寄件公司编码 String sendCompanyProvinceName = ''; //寄件公司省名称 不能为空 String sendCompanyProvinceCode = ''; //寄件公司省编码 不能为空 String sendCompanyCityName = ''; //寄件公司市名称 不能为空 String sendCompanyCityCode = ''; //寄件公司市编码 不能为空 String sendCompanyAreaName = ''; //寄件公司区名称 不能为空 String sendCompanyAreaCode = ''; //寄件公司区编码 不能为空 String sendCompanyAddress = ''; //寄件公司详细地址,不能为空 String receiptCompanyId = '0'; //收件公司id String receiptCompanyPhone = ''; //收件公司电话 不能为空 String receiptCompanyName = ''; //收件公司名称 不能为空 String receiptCompanyProvinceName = ''; //收件公司省名称 不能为空 String receiptCompanyProvinceCode = ''; //收件公司省编码 不能为空 String receiptCompanyCityName = ''; //收件公司市名称 不能为空 String receiptCompanyCityCode = ''; //收件公市编码 不能为空 String receiptCompanyAreaName = ''; //收件公区名称 不能为空 String receiptCompanyAreaCode = ''; //收件公司区编码 不能为空 String receiptCompanyAddress = ''; //收件公司地址详情 不能为空 String goods = ''; //商品名称 不能为空 int goodsQuantity = 1; //商品数量 不能为空 int goodsPackingId; //商品包装ID int goodsCategoryId; //商品类别ID int goodsPaymentMethod = 2; //付款方式 1,现付 2 到付 double goodsWeight = 0.0; //商品重量 double goodsPriceProtection = 0.0; //商品保价 double goodsAgencyFund = 0.0; //商品代收款 double goodsFreight = 0.0; //商品运费 不能为空 String memo = ''; //备注 String bankCard = '';//银行卡号 String bankName = '';//所属银行 String openBankName = '';//开户人 String openBankPhone = '';//开户电话 List lineList = []; String sendPCA = ' '; //Text组件内容必须有空格,否则报null String getPCA = ' '; String showTextGoodsCategory = ' '; String showTextGoodsPackage = ' '; String showTextPaymentMehod = '到付'; BluetoothUtils bluetooth = BluetoothUtils(); bool checkedCompanyInfo = false;//选择公司信息向sendCompanyPhoneController填充时不去模糊匹配 @override void initState() { super.initState(); goodsCategory().then((resp) { if (isNotError(context, resp) && this.mounted) { GoodsCategory goodsCategoryObj = GoodsCategory.fromJson(resp.data); setState(() { goodsCateGoryList = goodsCategoryObj.data; showTextGoodsCategory = goodsCateGoryList[0].name; goodsCategoryId = goodsCateGoryList[0].id; }); } }); goodsPackage().then((resp) { if (isNotError(context, resp) && this.mounted) { GoodsPackage goodsPackageObj = GoodsPackage.fromJson(resp.data); setState(() { goodsPackageList = goodsPackageObj.data; showTextGoodsPackage = goodsPackageList[0].name; goodsPackingId = goodsPackageList[0].id; }); } }); _scrollController.addListener(() { if (!tipStatus) { setState(() { tipStatus = true; }); } //if (_scrollController.position.pixels == _scrollController.position.maxScrollExtent) {} }); //发件公司电话监听 sendCompanyPhoneController.addListener(() { if(checkedCompanyInfo){ return; } setState(() { sendCompanyPhone = sendCompanyPhoneController.text; }); if (timer != null) { timer.cancel(); } if (sendCompanyPhoneController.text.length < 6 || sendCompanyPhoneController.text.length > 11) { setState(() { tipStatus = true; }); } timer = Timer(Duration(milliseconds: 250), () { if (sendCompanyPhoneController.text.length >= 6 && sendCompanyPhoneController.text.length <= 11) { likePhone(sendCompanyPhoneController.text).then((resp) { if (isNotError(context, resp) && this.mounted) { LikePhone likePhoneObj = LikePhone.fromJson(resp.data); likePhoneList = likePhoneObj.data; } if (likePhoneList.length > 0) { sendPhoneOrGetPhoneTab = true; RenderObject sendPhoneObj = _sendPhoneKey.currentContext.findRenderObject(); setState(() { tipWidth = sendPhoneObj.paintBounds.size.width; tipHeight = sendPhoneObj.paintBounds.size.height; tipPosX = sendPhoneObj.getTransformTo(null).getTranslation().x; tipPosY = sendPhoneObj.getTransformTo(null).getTranslation().y - ScreenUtil.getInstance().setHeight(90); tipStatus = false; }); } else { setState(() { tipStatus = true; }); } }); } }); }); //发件公司编码监听 sendCompanyCodeController.addListener(() { if(checkedCompanyInfo){ return; } setState(() { sendCompanyCode = sendCompanyCodeController.text; }); if (timer != null) { timer.cancel(); } if (sendCompanyCodeController.text.length < 2 || sendCompanyCodeController.text.length > 6) { setState(() { tipStatus = true; }); } timer = Timer(Duration(milliseconds: 250), () { if (sendCompanyCodeController.text.length >= 2 && sendCompanyCodeController.text.length <= 6) { likeCompanyCode(sendCompanyCodeController.text).then((resp) { if (isNotError(context, resp) && this.mounted) { LikePhone likePhoneObj = LikePhone.fromJson(resp.data); likePhoneList = likePhoneObj.data; } if (likePhoneList.length > 0) { sendPhoneOrGetPhoneTab = true; RenderObject sendPhoneObj = _sendCompanyCodeKey.currentContext.findRenderObject(); setState(() { tipWidth = sendPhoneObj.paintBounds.size.width; tipHeight = sendPhoneObj.paintBounds.size.height; tipPosX = sendPhoneObj.getTransformTo(null).getTranslation().x; tipPosY = sendPhoneObj.getTransformTo(null).getTranslation().y - ScreenUtil.getInstance().setHeight(90); tipStatus = false; }); } else { setState(() { tipStatus = true; }); } }); } }); }); //发件公司名字监听 sendCompanyNameController.addListener(() { if(checkedCompanyInfo){ return; } setState(() { sendCompanyName = sendCompanyNameController.text; }); if (timer != null) { timer.cancel(); } if (sendCompanyNameController.text.length < 2 || sendCompanyNameController.text.length > 11) { setState(() { tipStatus = true; }); } timer = Timer(Duration(milliseconds: 250), () { if (sendCompanyNameController.text.length >= 2 && sendCompanyNameController.text.length <= 11) { likeCompanyName(sendCompanyNameController.text).then((resp) { if (isNotError(context, resp) && this.mounted) { LikePhone likePhoneObj = LikePhone.fromJson(resp.data); likePhoneList = likePhoneObj.data; } if (likePhoneList.length > 0) { sendPhoneOrGetPhoneTab = true; RenderObject sendPhoneObj = _sendCompanyNameKey.currentContext.findRenderObject(); setState(() { tipWidth = sendPhoneObj.paintBounds.size.width; tipHeight = sendPhoneObj.paintBounds.size.height; tipPosX = sendPhoneObj.getTransformTo(null).getTranslation().x; tipPosY = sendPhoneObj.getTransformTo(null).getTranslation().y - ScreenUtil.getInstance().setHeight(90); tipStatus = false; }); } else { setState(() { tipStatus = true; }); } }); } }); }); //收件公司电话监听 receiptCompanyPhoneController.addListener(() { if(checkedCompanyInfo){ return; } setState(() { receiptCompanyPhone = receiptCompanyPhoneController.text; }); if (timer != null) { timer.cancel(); } if (receiptCompanyPhoneController.text.length < 6 || receiptCompanyPhoneController.text.length > 11) { setState(() { tipStatus = true; }); } timer = Timer(Duration(milliseconds: 250), () { if (receiptCompanyPhoneController.text.length >= 6 && receiptCompanyPhoneController.text.length <= 11) { likePhone(receiptCompanyPhoneController.text).then((resp) { if (isNotError(context, resp) && this.mounted) { LikePhone likePhoneObj = LikePhone.fromJson(resp.data); likePhoneList = likePhoneObj.data; } if (likePhoneList.length > 0) { sendPhoneOrGetPhoneTab = false; RenderObject getPhoneKey = _getPhoneKey.currentContext.findRenderObject(); setState(() { tipWidth = getPhoneKey.paintBounds.size.width; tipHeight = getPhoneKey.paintBounds.size.height; tipPosX = getPhoneKey.getTransformTo(null).getTranslation().x; tipPosY = getPhoneKey.getTransformTo(null).getTranslation().y - ScreenUtil.getInstance().setHeight(90); tipStatus = false; }); } else { setState(() { tipStatus = true; }); } }); } }); }); //收件公司名称监听 receiptCompanyNameController.addListener(() { if(checkedCompanyInfo){ return; } setState(() { receiptCompanyName = receiptCompanyNameController.text; }); if (timer != null) { timer.cancel(); } if (receiptCompanyNameController.text.length < 2 || receiptCompanyNameController.text.length > 11) { setState(() { tipStatus = true; }); } timer = Timer(Duration(milliseconds: 250), () { if (receiptCompanyNameController.text.length >= 2 && receiptCompanyNameController.text.length <= 11) { likeCompanyName(receiptCompanyNameController.text).then((resp) { if (isNotError(context, resp) && this.mounted) { LikePhone likePhoneObj = LikePhone.fromJson(resp.data); likePhoneList = likePhoneObj.data; } if (likePhoneList.length > 0) { sendPhoneOrGetPhoneTab = false; RenderObject getPhoneKey = _getCompanyNameKey.currentContext.findRenderObject(); setState(() { tipWidth = getPhoneKey.paintBounds.size.width; tipHeight = getPhoneKey.paintBounds.size.height; tipPosX = getPhoneKey.getTransformTo(null).getTranslation().x; tipPosY = getPhoneKey.getTransformTo(null).getTranslation().y - ScreenUtil.getInstance().setHeight(90); tipStatus = false; }); } else { setState(() { tipStatus = true; }); } }); } }); }); sendCompanyAddressController.addListener(() { setState(() { sendCompanyAddress = sendCompanyAddressController.text; }); }); receiptCompanyAddressController.addListener(() { setState(() { receiptCompanyAddress = receiptCompanyAddressController.text; }); }); bankCardFocusNode.addListener((){ if(!bankCardFocusNode.hasFocus){ if(bankCardController.text!=''){ getBankName(bankCardController.text).then((resp){ if(isNotError(context, resp) && this.mounted){ BankNameObj obj = BankNameObj.fromJson(resp.data); setState(() { bankNameController.text = obj.data; }); } }); } } }); } @override bool get wantKeepAlive => true; @override Widget build(BuildContext context) { return Container( child: Scaffold( appBar: AppBar( title: Text('发件', style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(36)), ), centerTitle: true, backgroundColor: Color.fromRGBO(64, 98, 254, 1), ), body: Stack( children: < Widget > [ Container( color: Color.fromRGBO(246, 246, 254, 1), padding: EdgeInsets.fromLTRB(0, ScreenUtil.getInstance().setHeight(20), 0, ScreenUtil.getInstance().setHeight(20)), child: ListView( controller: _scrollController, children: < Widget > [ _sendInfo(context), _getInfo(context), _itemInfoWidget(), _bankInfo(context), _submitBtn() ], ), ), Positioned( top: tipPosY, left: tipPosX, child: Offstage( offstage: tipStatus, child: Container( width: tipWidth, height: ScreenUtil.getInstance().setHeight(450), padding: EdgeInsets.only(left: ScreenUtil.getInstance().setWidth(30)), decoration: BoxDecoration( color: Color.fromRGBO(244, 248, 251, 1), ), child: ListView.builder( itemCount: likePhoneList.length, itemBuilder: (BuildContext context, int index) { return _tipItem(likePhoneList[index]); }, ) ), ) ) ], ), resizeToAvoidBottomPadding: false //键盘弹出,页面不跟随向上滑动,防止出现溢出错误 ), ); } Widget _sendInfo(BuildContext context) { return Container( color: Colors.white, margin: EdgeInsets.only(bottom: ScreenUtil.getInstance().setHeight(20)), child: Column( children: < Widget > [ _titleWidget('lib/images/icon_send.png', '发件信息'), _underLine(), _inputWiget('send_phone','发件电话', _sendPhoneKey,sendCompanyPhoneController), _inputWiget('send_code','企业编码', _sendCompanyCodeKey, sendCompanyCodeController,true), _inputWiget('send_name','企业名称', _sendCompanyNameKey, sendCompanyNameController,true), _cityWiget('城市/区域', context, 'send'), _lastContentWiget('详细地址', 'send') ], ) ); } Widget _getInfo(BuildContext context) { return Container( color: Colors.white, margin: EdgeInsets.only(bottom: ScreenUtil.getInstance().setHeight(20)), child: Column( children: < Widget > [ _titleWidget('lib/images/icon_shoujian.png', '收件信息'), _underLine(), _inputWiget('get_phone','收件电话', _getPhoneKey,receiptCompanyPhoneController), _inputWiget('get_name','企业名称', _getCompanyNameKey,receiptCompanyNameController ,true), _cityWiget('城市/区域', context, 'get'), _lastContentWiget('详细地址', 'get') ], ) ); } Widget _itemInfoWidget() { return Container( child: Container( color: Colors.white, margin: EdgeInsets.only(bottom: ScreenUtil.getInstance().setHeight(20)), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: < Widget > [ _titleWidget('lib/images/icon_huowu.png', "货物信息"), _underLine(), _itemContentWiget("货物名称", goodsController, true), _itemContentWiget("数量", goodsQuantityController), _itemContentWiget("运费", goodsFreightController), _itemContentWiget("代收", goodsAgencyFundController), _itemContentWiget("保价", goodsPriceProtectionController), _itemContentWiget("重量", goodsWeightController), _packageType('包装类型'), _packageType('货物类型'), _packageType('付款方式'), _descWidget() ], ), ) ); } Widget _bankInfo(BuildContext context) { return Container( color: Colors.white, margin: EdgeInsets.only(bottom: ScreenUtil.getInstance().setHeight(20)), child: Column( children: < Widget > [ _titleWidget('lib/images/icon_bank.png', '银行信息'), _underLine(), _contentBankWiget('银行卡号', 'bank'), _contentBankWiget('银行名称', 'bank',true), _contentBankWiget('开户人', 'bank',true), _lastBankContentWiget('开户电话', 'bank'), ], ) ); } Widget _titleWidget(String iconUrl, String str) { return Container( height: ScreenUtil.getInstance().setHeight(90), padding: EdgeInsets.only(left: ScreenUtil.getInstance().setWidth(30)), child: Center( child: Row( mainAxisAlignment: MainAxisAlignment.start, children: < Widget > [ Padding( padding: EdgeInsets.only(right: ScreenUtil.getInstance().setHeight(20)), child: Image.asset( iconUrl, width: ScreenUtil.getInstance().setWidth(40), height: ScreenUtil.getInstance().setHeight(40), ) ), Text(str, style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(32)), ) ], ), ), ); } Widget _underLine() { return Container( color: Color.fromRGBO(223, 223, 223, 1), height: ScreenUtil.getInstance().setHeight(1), ); } Widget _inputWiget(String key,String title GlobalKey tab,TextEditingController tab1,[bool keyboardType = false]) { return Padding( key: tab, padding: EdgeInsets.only(left: ScreenUtil.getInstance().setWidth(30)), child: Column( children: < Widget > [ SizedBox( height: ScreenUtil.getInstance().setHeight(89), child: Center( child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: < Widget > [ Expanded( flex: 0, child: Text(title, style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(74, 74, 74, 1)), ), ), Expanded( child: Row( mainAxisAlignment: MainAxisAlignment.end, children: < Widget > [ SizedBox( width: ScreenUtil.getInstance().setWidth(500), child: Padding( padding: EdgeInsets.only(right: ScreenUtil.getInstance().setWidth(30)), child: TextField( controller: tab1, keyboardType: keyboardType ? TextInputType.text : TextInputType.number, textAlign: TextAlign.end, decoration: InputDecoration( border: InputBorder.none ), onEditingComplete: () { setState(() { FocusScope.of(context).requestFocus(FocusNode()); tipStatus = true; }); }, onChanged: (value){ checkedCompanyInfo = false; if(key=='send_phone'){ sendCompanyCode = ''; sendCompanyName = ''; sendCompanyId ='0'; sendCompanyCodeController.text = ''; sendCompanyNameController.text = ''; sendPCA = ''; sendCompanyProvinceName = ''; sendCompanyProvinceCode = ''; sendCompanyCityName = ''; sendCompanyCityCode = ''; sendCompanyAreaName = ''; sendCompanyAreaCode = ''; bankCardController.text = ''; bankNameController.text = ''; openBankNameController.text = ''; openBankPhoneController.text = ''; sendCompanyAddressController.text = ''; }else if(key=='get_phone'){ receiptCompanyName = ''; receiptCompanyNameController.text = ''; receiptCompanyId = '0'; getPCA = ''; receiptCompanyProvinceName = ''; receiptCompanyProvinceCode = ''; receiptCompanyCityName = ''; receiptCompanyCityCode = ''; receiptCompanyAreaName = ''; receiptCompanyAreaCode = ''; receiptCompanyAddressController.text = ''; }else if(key=='send_code'){ sendCompanyPhone = ''; sendCompanyName = ''; sendCompanyId ='0'; sendCompanyPhoneController.text = ''; sendCompanyNameController.text = ''; sendPCA = ''; sendCompanyProvinceName = ''; sendCompanyProvinceCode = ''; sendCompanyCityName = ''; sendCompanyCityCode = ''; sendCompanyAreaName = ''; sendCompanyAreaCode = ''; bankCardController.text = ''; bankNameController.text = ''; openBankNameController.text = ''; openBankPhoneController.text = ''; sendCompanyAddressController.text = ''; }else if(key=='send_name'){ sendCompanyCode = ''; sendCompanyPhone = ''; sendCompanyId ='0'; sendCompanyCodeController.text = ''; sendCompanyPhoneController.text = ''; sendPCA = ''; sendCompanyProvinceName = ''; sendCompanyProvinceCode = ''; sendCompanyCityName = ''; sendCompanyCityCode = ''; sendCompanyAreaName = ''; sendCompanyAreaCode = ''; bankCardController.text = ''; bankNameController.text = ''; openBankNameController.text = ''; openBankPhoneController.text = ''; sendCompanyAddressController.text = ''; }else if(key=='get_name'){ receiptCompanyPhone = ''; receiptCompanyPhoneController.text = ''; receiptCompanyId = '0'; getPCA = ''; receiptCompanyProvinceName = ''; receiptCompanyProvinceCode = ''; receiptCompanyCityName = ''; receiptCompanyCityCode = ''; receiptCompanyAreaName = ''; receiptCompanyAreaCode = ''; receiptCompanyAddressController.text = ''; } }, ), ) ), // Icon(Icons.keyboard_arrow_right, color: Color.fromRGBO(199, 199, 204, 1), ) ], ) ) ], ), ) ), Expanded( flex: 0, child: _underLine() ) ], ) ); } // Widget _contentWiget(String key, String type, [bool keyboardType = false]) { //false是数字键盘 // return Padding( // padding: EdgeInsets.only(left: ScreenUtil.getInstance().setWidth(30)), // child: Column( // children: < Widget > [ // SizedBox( // height: ScreenUtil.getInstance().setHeight(89), // child: Center( // child: Row( // mainAxisAlignment: MainAxisAlignment.spaceBetween, // children: < Widget > [ // Expanded( // flex: 0, // child: Text(key, style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(74, 74, 74, 1)), ), // ), // Expanded( // child: Row( // mainAxisAlignment: MainAxisAlignment.end, // children: < Widget > [ // SizedBox( // width: ScreenUtil.getInstance().setWidth(500), // child:Padding( // padding: EdgeInsets.only(right: ScreenUtil.getInstance().setWidth(30)), // child:TextField( // controller: (key == '企业名称') ? (type == 'send' ? sendCompanyNameController : receiptCompanyNameController) : (key == '企业编码' ? sendCompanyCodeController : null), // keyboardType: keyboardType ? TextInputType.text : TextInputType.number, // textAlign: TextAlign.end, // decoration: InputDecoration( // border: InputBorder.none // ), // onChanged: (value) { // if (key == '货物名称') { // goods = value; // } else if (key == '数量') { // goodsQuantity = int.parse(value); // } else if (key == '运费') { // goodsFreight = double.parse(value); // String temp = goodsFreight.toStringAsFixed(1); // goodsFreight = double.parse(temp); // } else if (key == '代收') { // goodsAgencyFund = double.parse(value); // String temp = goodsAgencyFund.toStringAsFixed(1); // goodsAgencyFund = double.parse(temp); // } else if (key == '保价') { // goodsPriceProtection = double.parse(value); // String temp = goodsPriceProtection.toStringAsFixed(1); // goodsPriceProtection = double.parse(temp); // } else if (key == '重量') { // goodsWeight = double.parse(value); // String temp = goodsWeight.toStringAsFixed(1); // goodsWeight = double.parse(temp); // } // }, // ), // ) // ), // // Icon(Icons.keyboard_arrow_right, color: Color.fromRGBO(199, 199, 204, 1), ) // ], // ) // ) // ], // ), // ) // ), // Expanded( // flex: 0, // child: _underLine() // ) // ], // ) // ); // } Widget _itemContentWiget(String key,TextEditingController controller, [bool keyboardType = false]) { //false是数字键盘 return Padding( padding: EdgeInsets.only(left: ScreenUtil.getInstance().setWidth(30)), child: Column( children: < Widget > [ SizedBox( height: ScreenUtil.getInstance().setHeight(89), child: Center( child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: < Widget > [ Expanded( flex: 0, child: Text(key, style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(74, 74, 74, 1)), ), ), Expanded( child: Row( mainAxisAlignment: MainAxisAlignment.end, children: < Widget > [ SizedBox( width: ScreenUtil.getInstance().setWidth(500), child: Padding( padding: EdgeInsets.only(right: ScreenUtil.getInstance().setWidth(30)), child:TextField( controller: controller, keyboardType: keyboardType ? TextInputType.text : TextInputType.number, textAlign: TextAlign.end, decoration: InputDecoration( border: InputBorder.none ), onChanged: (value) { if (key == '货物名称') { goods = value; } else if (key == '数量') { goodsQuantity = int.parse(value); } else if (key == '运费') { goodsFreight = double.parse(value); String temp = goodsFreight.toStringAsFixed(1); goodsFreight = double.parse(temp); } else if (key == '代收') { goodsAgencyFund = double.parse(value); String temp = goodsAgencyFund.toStringAsFixed(1); goodsAgencyFund = double.parse(temp); } else if (key == '保价') { goodsPriceProtection = double.parse(value); String temp = goodsPriceProtection.toStringAsFixed(1); goodsPriceProtection = double.parse(temp); } else if (key == '重量') { goodsWeight = double.parse(value); String temp = goodsWeight.toStringAsFixed(1); goodsWeight = double.parse(temp); } }, ), ) ), // Icon(Icons.keyboard_arrow_right, color: Color.fromRGBO(199, 199, 204, 1), ) ], ) ) ], ), ) ), Expanded( flex: 0, child: _underLine() ) ], ) ); } Widget _contentBankWiget(String key, String type, [bool keyboardType = false]) { //false是数字键盘 return Padding( padding: EdgeInsets.only(left: ScreenUtil.getInstance().setWidth(30)), child: Column( children: < Widget > [ SizedBox( height: ScreenUtil.getInstance().setHeight(89), child: Center( child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: < Widget > [ Expanded( flex: 0, child: Text(key, style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(74, 74, 74, 1)), ), ), Expanded( child: Row( mainAxisAlignment: MainAxisAlignment.end, children: < Widget > [ SizedBox( width: ScreenUtil.getInstance().setWidth(500), child: Padding( padding: EdgeInsets.only(right: ScreenUtil.getInstance().setWidth(30)), child:TextField( focusNode: key == '银行卡号'?bankCardFocusNode:null, controller: key == '银行卡号'?bankCardController:key=='银行名称'?bankNameController:openBankNameController, keyboardType: keyboardType ? TextInputType.text : TextInputType.number, textAlign: TextAlign.end, decoration: InputDecoration( border: InputBorder.none ), ), ) ), // Icon(Icons.keyboard_arrow_right, color: Color.fromRGBO(199, 199, 204, 1), ) ], ) ) ], ), ) ), Expanded( flex: 0, child: _underLine() ) ], ) ); } Widget _cityWiget(String key, BuildContext context, String type) { return GestureDetector( child: Padding( padding: EdgeInsets.only(left: ScreenUtil.getInstance().setWidth(30)), child: Column( children: < Widget > [ SizedBox( height: ScreenUtil.getInstance().setHeight(89), child: Center( child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: < Widget > [ Expanded( flex: 0, child: Text(key, style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(74, 74, 74, 1)), ), ), Expanded( child: Row( mainAxisAlignment: MainAxisAlignment.end, children: < Widget > [ //Text('${value}', style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(136, 136, 136, 1)), ), SizedBox( width: ScreenUtil.getInstance().setWidth(500), child: Text(type == 'send' ? sendPCA : getPCA, textAlign: TextAlign.end, overflow: TextOverflow.ellipsis, ) ), Icon(Icons.keyboard_arrow_right, color: Color.fromRGBO(199, 199, 204, 1), ) ], ) ) ], ), ) ), Expanded( flex: 0, child: _underLine() ) ], ) ), onTap: () { getCity(context).then((resp) { if (resp == null) { return; } print(resp.toString()); setState(() { if (type == 'send') { sendPCA = resp.provinceName + ' ' + resp.cityName + ' ' + ' ' + resp.areaName; sendCompanyProvinceName = resp.provinceName; sendCompanyProvinceCode = resp.provinceId; sendCompanyCityName = resp.cityName; sendCompanyCityCode = resp.cityId; sendCompanyAreaName = resp.areaName; sendCompanyAreaCode = resp.areaId; } else { getPCA = resp.provinceName + ' ' + resp.cityName + ' ' + ' ' + resp.areaName; receiptCompanyProvinceName = resp.provinceName; receiptCompanyProvinceCode = resp.provinceId; receiptCompanyCityName = resp.cityName; receiptCompanyCityCode = resp.cityId; receiptCompanyAreaName = resp.areaName; receiptCompanyAreaCode = resp.areaId; } }); //print(value); }); }, ); } Widget _lastContentWiget(String key, String type) { return Padding( padding: EdgeInsets.only(left: ScreenUtil.getInstance().setWidth(30)), child: SizedBox( height: ScreenUtil.getInstance().setHeight(89), child: Center( child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: < Widget > [ Expanded( flex: 0, child: Text(key, style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(74, 74, 74, 1)), ), ), Expanded( child: Row( mainAxisAlignment: MainAxisAlignment.end, children: < Widget > [ //Text('${value}', style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(136, 136, 136, 1)), ), SizedBox( width: ScreenUtil.getInstance().setWidth(500), child: Padding( padding: EdgeInsets.only(right: ScreenUtil.getInstance().setWidth(30)), child: TextField( controller: type == 'send' ? sendCompanyAddressController : receiptCompanyAddressController, textAlign: TextAlign.end, decoration: InputDecoration( border: InputBorder.none ), ), ) ), // Icon(Icons.keyboard_arrow_right, color: Color.fromRGBO(199, 199, 204, 1), ) ], ) ) ], ), ) ) ); } Widget _lastBankContentWiget(String key, String type) { return Padding( padding: EdgeInsets.only(left: ScreenUtil.getInstance().setWidth(30)), child: SizedBox( height: ScreenUtil.getInstance().setHeight(89), child: Center( child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: < Widget > [ Expanded( flex: 0, child: Text(key, style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(74, 74, 74, 1)), ), ), Expanded( child: Row( mainAxisAlignment: MainAxisAlignment.end, children: < Widget > [ //Text('${value}', style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(136, 136, 136, 1)), ), SizedBox( width: ScreenUtil.getInstance().setWidth(500), child: Padding( padding: EdgeInsets.only(right: ScreenUtil.getInstance().setWidth(30)), child: TextField( controller: openBankPhoneController, textAlign: TextAlign.end, keyboardType: TextInputType.number, decoration: InputDecoration( border: InputBorder.none ), ), ) ), // Icon(Icons.keyboard_arrow_right, color: Color.fromRGBO(199, 199, 204, 1), ) ], ) ) ], ), ) ) ); } Widget _descWidget() { return Container( padding: EdgeInsets.all(ScreenUtil.getInstance().setWidth(30)), //child: Text(str, maxLines: 100, style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(74, 74, 74, 1)), ), child: TextField( maxLines: 3, controller: memoController, decoration: InputDecoration( border: InputBorder.none, hintText: "请输入备注内容" ), onChanged: (value) { setState(() { memo = value; }); }, ), ); } Widget _submitBtn() { return GestureDetector( child: Container( margin: EdgeInsets.fromLTRB(ScreenUtil.getInstance().setWidth(30), ScreenUtil.getInstance().setWidth(50), ScreenUtil.getInstance().setWidth(30), ScreenUtil.getInstance().setWidth(40)), height: ScreenUtil.getInstance().setHeight(88), decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(4)), color: Color.fromRGBO(37, 102, 242, 1), ), child: Center( child: Row( mainAxisAlignment: MainAxisAlignment.center, children: < Widget > [ Offstage( offstage: submitStatus, child: SizedBox( width: ScreenUtil.getInstance().setWidth(45), height: ScreenUtil.getInstance().setHeight(45), child: Image.asset('lib/images/loading.gif'), ), ), Text("提交", style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(32), color: Colors.white), ), ], ) ), ), onTap: () { if (!submitStatus) { return; } String errStr = ''; print('sendCompanyId---${sendCompanyId}'); print('sendCompanyName---${sendCompanyName}'); print('sendCompanyPhone---${sendCompanyPhone}'); print('sendCompanyCode---${sendCompanyCode}'); print('sendCompanyProvinceName---${sendCompanyProvinceName}'); print('sendCompanyProvinceCode---${sendCompanyProvinceCode}'); print('sendCompanyCityName---${sendCompanyCityName}'); print('sendCompanyCityCode---${sendCompanyCityCode}'); print('sendCompanyAreaName---${sendCompanyAreaName}'); print('sendCompanyAreaCode---${sendCompanyAreaCode}'); print('sendCompanyAddress---${sendCompanyAddress}'); print('receiptCompanyId---${receiptCompanyId}'); print('receiptCompanyPhone---${receiptCompanyPhone}'); print('receiptCompanyName---${receiptCompanyName}'); print('receiptCompanyProvinceName---${receiptCompanyProvinceName}'); print('receiptCompanyProvinceCode---${receiptCompanyProvinceCode}'); print('receiptCompanyCityName---${receiptCompanyCityName}'); print('receiptCompanyCityCode---${receiptCompanyCityCode}'); print('receiptCompanyAreaName---${receiptCompanyAreaName}'); print('receiptCompanyAreaCode---${receiptCompanyAreaCode}'); print('receiptCompanyAddress---${receiptCompanyAddress}'); print('goods---${goods}'); print('goodsQuantity---${goodsQuantity}'); print('goodsPackingId---${goodsPackingId}'); print('goodsCategoryId---${goodsCategoryId}'); print('goodsPaymentMethod---${goodsPaymentMethod}'); print('goodsWeight---${goodsWeight}'); print('goodsPriceProtection---${goodsPriceProtection}'); print('goodsAgencyFund---${goodsAgencyFund}'); print('goodsFreight---${goodsFreight}'); print('memo---${memo}'); if (sendCompanyPhone == '') { errStr = '请填写发件电话'; } if (sendCompanyName == '') { errStr = '请填写发件企业名称'; } if (sendCompanyProvinceName == '') { errStr = '请填写发件城市/区域'; } if (sendCompanyAddress == '') { errStr = '请填写发件详细地址'; } if (receiptCompanyPhone == '') { errStr = '请填写收件电话'; } if (receiptCompanyName == '') { errStr = '请填写收件企业名称'; } if (receiptCompanyProvinceName == '') { errStr = '请填写收件城市/区域'; } if (receiptCompanyAddress == '') { errStr = '请填写收件详细地址'; } // if (goods == '') { // errStr = '请填写货物名称'; // } if (goodsQuantity == 0) { errStr = '请填写货物数量'; } if (int.tryParse(goodsQuantity.toString()) == null) { errStr = '货物数量格式错误'; } if (goodsFreight == 0.0) { errStr = '请填写运费'; } if (sendCompanyPhone == '' || receiptCompanyPhone == '' ) { errStr = '请输入正确的电话'; } if (goodsAgencyFund>0) {//如果有代收 if(bankNameController.text=='' || bankCardController.text=='' || openBankNameController.text=='' || openBankPhoneController.text==''){ errStr = "请补全银行卡信息"; } } if (errStr != '') { showError(errStr); return; } if(lineList.length>1){ showLineModal(lineList); return; } submitOrder(); }, ); } submitOrder(){ setState(() { submitStatus = false; }); getKey('stationId').then((value) { createOrder( lineId,//收件线路Id value,//当前用户选择的站点id sendCompanyId, //寄件公司Id sendCompanyName, //寄件公司名称 不能为空 sendCompanyPhone, //寄件公司电话 不能为空 sendCompanyCode ?? '', //寄件公司编码 sendCompanyProvinceName, //寄件公司省名称 不能为空 sendCompanyProvinceCode, //寄件公司省编码 不能为空 sendCompanyCityName, //寄件公司市名称 不能为空 sendCompanyCityCode, //寄件公司市编码 不能为空 sendCompanyAreaName, //寄件公司区名称 不能为空 sendCompanyAreaCode, //寄件公司区编码 不能为空 sendCompanyAddress, //寄件公司详细地址,不能为空 receiptCompanyId, //收件公司id receiptCompanyPhone, //收件公司电话 不能为空 receiptCompanyName, //收件公司名称 不能为空 receiptCompanyProvinceName, //收件公司省名称 不能为空 receiptCompanyProvinceCode, //收件公司省编码 不能为空 receiptCompanyCityName, //收件公司市名称 不能为空 receiptCompanyCityCode, //收件公市编码 不能为空 receiptCompanyAreaName, //收件公区名称 不能为空 receiptCompanyAreaCode, //收件公司区编码 不能为空 receiptCompanyAddress, //收件公司地址详情 不能为空 goods, //商品名称 不能为空 goodsQuantity, //商品数量 不能为空 goodsPackingId, //商品包装ID goodsCategoryId, //商品类别ID goodsPaymentMethod, //付款方式 1,现付 2 到付 goodsWeight, //商品重量 goodsPriceProtection * 100, //商品保价,已分为单位 goodsAgencyFund * 100, //商品代收款,已分为单位 goodsFreight * 100, //商品运费 不能为空 ,已分为单位 memo, //备注 bankCardController.text, bankNameController.text, openBankNameController.text, openBankPhoneController.text ).then((resp) { if (isNotError(context, resp) && this.mounted) { setState(() { submitStatus = true; }); OrderDetailData data = OrderDetailObj.fromJson(resp.data).data; showDialog < Null > ( context: context, //BuildContext对象 barrierDismissible: false, builder: (BuildContext context) { //打印 getKey('printType').then((printType){ getKey('stationName').then((stationName){ getKey('nickName').then((nickName){ getKey('companyName').then((companyName){ getKey('companyCustomerPhone').then((companyCustomerPhone){ double goodsYs = data.goodsPaymentMethod==2?(data.goodsFreight/100)+(data.goodsAgencyFund/100):data.goodsAgencyFund/100; String nowDate = fromatDate( DateTime.now().millisecondsSinceEpoch);//打印时间 String createTime = fromatDate(data.createTime); double goodsAgencyFunds = data.goodsAgencyFund/100; double goodsDFreight = data.goodsPaymentMethod==2?data.goodsFreight/100:0; double goodsXFreight = data.goodsPaymentMethod==1?data.goodsFreight/100:0; String receiptAddress = data.receiptCompanyAddress.length>10?data.receiptCompanyAddress.substring(0,10):data.receiptCompanyAddress; Map pum = { "[logisticsNo]": "${data.orderNo ?? ''}", "[createTime]": "$createTime", "[sendStationName]": "$stationName", "[dealerCode]": "${data.sendCompanyCode ?? ''}", "[dealerName]": "${data.sendCompanyName}", "[dealerTel]": "${data.sendCompanyPhone ?? ''}", "[repairName]": "${data.receiptCompanyName ?? ''}", "[repairTel]": "${data.receiptCompanyPhone ?? ''}", "[endStationName]": "${data.receiptStationName ?? ''}", "[goodsLineCode]": "${data.lineCode ?? ''}", "[goodsLine]": "${data.lineName ?? ''}", "[repairAddress]": "${receiptAddress?? ''}", "[goodsQuantity]": "${data.goodsQuantity ?? ''}", "[goodsInsurance]": "${data.goodsInsurance ?? ''}", "[goodsFlatCost]": "${data.goodsFlatCost ?? ''}", // 到付 现付 金额 "[goodsDFreight]": "$goodsDFreight", "[goodsXFreight]": "$goodsXFreight", "[goodsAgencyFund]": "$goodsAgencyFunds", "[goodsYs]": "$goodsYs", "[dealerBankAccount]": "${data.sendCompanyBankCard ?? ''}", "[goodsRemark]": "${data.memo ?? ''}", "[realName]": "${nickName?? ''}", "[currentTime]": "$nowDate", "[currentGoodNumber]": "1/1", "[companyCustomerPhone]":"$companyCustomerPhone", "[companyName]":"$companyName" }; bluetooth.printOrder(pum, int.parse(printType)).then((value){ if(value==null){ showDialog ( context: context, barrierDismissible: false, builder: (BuildContext context) { return MyAlertDialog(text: '未连接打印机',childCallback:(val){}); } ); } }); }); }); }); }); }); return SendDialog( //调用对话框 orderNo: data.orderNo, childCallback: (val) { if (!val) { //跳转 Navigator.push(context, MaterialPageRoute(builder: (context) { return OrderDetail(orderNo: data.orderNo, ); })); }else{ setState(() { //----------------清除信息-------------------- lineId = '-1'; sendCompanyCode = ''; sendCompanyName = ''; sendCompanyId ='0'; sendCompanyPhoneController.text= ''; sendCompanyCodeController.text = ''; sendCompanyNameController.text = ''; sendPCA = ''; sendCompanyProvinceName = ''; sendCompanyProvinceCode = ''; sendCompanyCityName = ''; sendCompanyCityCode = ''; sendCompanyAreaName = ''; sendCompanyAreaCode = ''; bankCardController.text = ''; bankNameController.text = ''; openBankNameController.text = ''; openBankPhoneController.text = ''; sendCompanyAddressController.text = ''; receiptCompanyName = ''; receiptCompanyPhoneController.text= ''; receiptCompanyNameController.text = ''; receiptCompanyId = '0'; getPCA = ''; receiptCompanyProvinceName = ''; receiptCompanyProvinceCode = ''; receiptCompanyCityName = ''; receiptCompanyCityCode = ''; receiptCompanyAreaName = ''; receiptCompanyAreaCode = ''; receiptCompanyAddressController.text = ''; goods = ''; //商品名称 不能为空 goodsQuantity = 1; //商品数量 不能为空 goodsPaymentMethod = 2; //付款方式 1,现付 2 到付 goodsWeight = 0.0; //商品重量 goodsPriceProtection = 0.0; //商品保价 goodsAgencyFund = 0.0; //商品代收款 goodsFreight = 0.0; //商品运费 不能为空 memo = ''; //备注 goodsController.text = ''; goodsQuantityController.text = ''; goodsFreightController.text = ''; goodsAgencyFundController.text = ''; goodsPriceProtectionController.text = ''; goodsWeightController.text = ''; memoController.text = ''; //--------------------------------------------- }); } }, ); }); } else { setState(() { submitStatus = true; }); } }); }); } showError(String str) { showDialog < Null > ( context: context, //BuildContext对象 barrierDismissible: false, builder: (BuildContext context) { return MyAlertDialog( //调用对话框 text: str, childCallback: (val) {}, ); }); } showLineModal(List list){ showDialog < Null > ( context: context, //BuildContext对象 barrierDismissible: false, builder: (BuildContext context) { return ShowLineModal( lineList: list, childCallback: (val) { lineId = val; submitOrder(); }, ); }); } Future getCity(context) async { Result result = await CityPickers.showCityPicker( context: context, ); return result; } Widget _tipItem(LikePhoneList obj) { return Container( child: Column( children: < Widget > [ InkWell( child: Container( height: ScreenUtil.getInstance().setHeight(89), child: Center( child: Row( mainAxisAlignment: MainAxisAlignment.start, children: < Widget > [ Padding( padding: EdgeInsets.only(right: ScreenUtil.getInstance().setWidth(50)), child: Text(obj.uzerPhone!=null?obj.uzerPhone:obj.companyPhone, style: TextStyle( fontSize: ScreenUtil.getInstance().setSp(28), color: Color.fromRGBO(74, 74, 74, 1) ), ) ), SizedBox( width: ScreenUtil.getInstance().setWidth(185), child: Text(obj.areaCode, textAlign: TextAlign.left, style: TextStyle( fontSize: ScreenUtil.getInstance().setSp(28), color: Color.fromRGBO(155, 155, 155, 1) ), ), ), Text(obj.companyName, textAlign: TextAlign.left, overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: ScreenUtil.getInstance().setSp(28), color: Color.fromRGBO(155, 155, 155, 1) ), ) ], ), ), ), onTap: () { checkedCompanyInfo = true; if (sendPhoneOrGetPhoneTab) { sendCompanyPhone = obj.uzerPhone!=null?obj.uzerPhone:obj.companyPhone; sendCompanyCode = obj.companyCode; sendCompanyName = obj.companyName; sendCompanyId = obj.id.toString(); sendCompanyPhoneController.text = obj.uzerPhone!=null?obj.uzerPhone:obj.companyPhone; sendCompanyCodeController.text = obj.companyCode; sendCompanyNameController.text = obj.companyName; sendPCA = obj.provinceName + ' ' + obj.cityName + ' ' + ' ' + obj.areaName; sendCompanyProvinceName = obj.provinceName; sendCompanyProvinceCode = obj.provinceCode; sendCompanyCityName = obj.cityName; sendCompanyCityCode = obj.cityCode; sendCompanyAreaName = obj.areaName; sendCompanyAreaCode = obj.areaCode; sendCompanyAddressController.text = obj.address; bankCardController.text = obj.bankCard; bankNameController.text = obj.bankName; openBankNameController.text = obj.openBankName; openBankPhoneController.text = obj.openBankPhone; } else { receiptCompanyPhone = obj.uzerPhone!=null?obj.uzerPhone:obj.companyPhone; receiptCompanyName = obj.companyName; receiptCompanyPhoneController.text = obj.uzerPhone!=null?obj.uzerPhone:obj.companyPhone; receiptCompanyNameController.text = obj.companyName; receiptCompanyId = obj.id.toString(); getLineOfCompanyId(receiptCompanyId).then((resp){ if(isNotError(context, resp) && this.mounted){ CompanyOfLine obj = CompanyOfLine.fromJson(resp.data); setState(() { lineList = obj.data; }); } }); getPCA = obj.provinceName + ' ' + obj.cityName + ' ' + ' ' + obj.areaName; receiptCompanyProvinceName = obj.provinceName; receiptCompanyProvinceCode = obj.provinceCode; receiptCompanyCityName = obj.cityName; receiptCompanyCityCode = obj.cityCode; receiptCompanyAreaName = obj.areaName; receiptCompanyAreaCode = obj.areaCode; receiptCompanyAddressController.text = obj.address; } setState(() { FocusScope.of(context).requestFocus(FocusNode()); tipStatus = true; }); }, ), _underLine() ], ), ); } Widget _packageType(String key) { return Padding( padding: EdgeInsets.only(left: ScreenUtil.getInstance().setWidth(30)), child: Column( children: < Widget > [ InkWell( child: SizedBox( height: ScreenUtil.getInstance().setHeight(89), child: Center( child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: < Widget > [ Expanded( flex: 0, child: Text(key, style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(74, 74, 74, 1)), ), ), Expanded( child: Row( mainAxisAlignment: MainAxisAlignment.end, children: < Widget > [ //Text('${value}', style: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(136, 136, 136, 1)), ), SizedBox( width: ScreenUtil.getInstance().setWidth(500), child: Text(key == '包装类型' ? showTextGoodsPackage : key == '货物类型' ? showTextGoodsCategory : showTextPaymentMehod, textAlign: TextAlign.end, ) ), Icon(Icons.keyboard_arrow_right, color: Color.fromRGBO(199, 199, 204, 1), ) ], ) ) ], ), ) ), onTap: () { showPickerModal(context, key); }, ), Expanded( flex: 0, child: _underLine() ) ], ) ); } showPickerModal(BuildContext context, String type) { List < dynamic > data = []; if (type == '包装类型') { for (int i = 0; i < goodsPackageList.length; i++) { data.add(goodsPackageList[i].name); } } else if (type == '货物类型') { for (int i = 0; i < goodsCateGoryList.length; i++) { data.add(goodsCateGoryList[i].name); } } else if (type == '付款方式') { data = ['现付', '到付']; } new Picker( adapter: PickerDataAdapter < String > (pickerdata: data), height: ScreenUtil.getInstance().setHeight(450), confirmText: '确定', confirmTextStyle: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(64, 98, 254, 1)), cancelText: '取消', cancelTextStyle: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(153, 153, 153, 1)), headercolor: Color.fromRGBO(245, 245, 245, 1), itemExtent: ScreenUtil.getInstance().setHeight(80), textStyle: TextStyle(fontSize: ScreenUtil.getInstance().setSp(30), color: Color.fromRGBO(42, 42, 42, 1)), changeToFirst: true, hideHeader: false, onConfirm: (Picker picker, List value) { if (type == '包装类型') { setState(() { showTextGoodsPackage = goodsPackageList[value[0]].name; goodsPackingId = goodsPackageList[value[0]].id; }); } else if (type == '货物类型') { setState(() { showTextGoodsCategory = goodsCateGoryList[value[0]].name; goodsCategoryId = goodsCateGoryList[value[0]].id; }); } else if (type == '付款方式') { setState(() { showTextPaymentMehod = data[value[0]]; }); if (showTextPaymentMehod == '现付') { goodsPaymentMethod = 1; } else { goodsPaymentMethod = 2; } } } ).showModal(this.context); //_scaffoldKey.currentState); } }