import 'package:flutter/material.dart'; import '/common/colorCom.dart'; import 'package:wms_app/utils/dialogUtils.dart'; import 'package:wms_app/api_client/stock_out.dart'; import 'dart:convert'; class StockOutEmpty extends StatefulWidget { const StockOutEmpty({super.key}); @override State createState() => _CallEmptyCartPageState(); } class _CallEmptyCartPageState extends State { int vehicle_0 = 0, vehicle_1 = 1; String status_0 = "不可用", status_1 = "不可用"; @override void initState() { super.initState(); _fetchData(); } Future _fetchData() async { await StockOutApi.getVehicleIsEmpty(vehicle_0).then((response) { if (response["code"] != 200) { var thisContext = context; if (thisContext.mounted) { DialogUtils.showWarningMessage(thisContext, "警告", "服务器请求失败", btnLabel: "我知道了"); } return; } final data = Map.from(jsonDecode(response["data"])); if (data["code"] == 200) { // 请求成功 if (data["data"]["isEmpty"] == 1 && data["data"]["isLock"] == 0) { status_0 = "可用"; return; } } return; }).catchError((err) { var thisContext = context; if (thisContext.mounted) { DialogUtils.showErrorMessage( thisContext, "请求发生错误", "请求服务器发生错误:${err.toString()}", btnLabel: "我知道了"); } return; }); await StockOutApi.getVehicleIsEmpty(vehicle_1).then((response) { if (response["code"] != 200) { var thisContext = context; if (thisContext.mounted) { DialogUtils.showWarningMessage(thisContext, "警告", "服务器请求失败", btnLabel: "我知道了"); } return; } final data = Map.from(jsonDecode(response["data"])); if (data["code"] == 200) { // 请求成功 if (data["data"]["isEmpty"] == 1 && data["data"]["isLock"] == 0) { status_1 = "可用"; return; } } return; }).catchError((err) { var thisContext = context; if (thisContext.mounted) { DialogUtils.showErrorMessage( thisContext, "请求发生错误", "请求服务器发生错误:${err.toString()}", btnLabel: "我知道了"); } return; }); } String selectedOption = "1"; String status = "可用"; bool isLoading = false; void callEmptyCart() { if ((selectedOption == "1" && status_0 == "不可用") || (selectedOption == "2" && status_1 == "不可用")) { DialogUtils.showWarningMessage(context, "警告", "选中的空托不可用", btnLabel: "我知道了"); } else { StockOutApi.addStockOut().then((response) { if (response["code"] != 200) { var thisContext = context; if (thisContext.mounted) { DialogUtils.showWarningMessage(thisContext, "警告", "服务器请求失败", btnLabel: "我知道了"); } return; } final data = Map.from(jsonDecode(response["data"])); if (data["code"] == 200) { DialogUtils.showSuccessMessage(context, "成功", "空托已呼叫", btnLabel: "我知道了"); return; } }).catchError((err) { var thisContext = context; if (thisContext.mounted) { DialogUtils.showErrorMessage( thisContext, "请求发生错误", "请求服务器发生错误:${err.toString()}", btnLabel: "我知道了"); } return; }); } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( iconTheme: const IconThemeData(color: Colors.white), leading: IconButton( onPressed: () { Navigator.of(context).pop(); }, icon: const Icon(Icons.arrow_back)), centerTitle: true, backgroundColor: ColorCommon.colorScheme, title: const Text( "呼叫空托", style: TextStyle(color: Colors.white), ), ), body: FutureBuilder( future: _fetchData(), // 使用FutureBuilder来等待_fetchData的完成 builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.waiting) { return Center(child: CircularProgressIndicator()); // 显示加载中 } else if (snapshot.hasError) { return Center( child: Text("请求失败: ${snapshot.error.toString()}"), ); } else { return Center( child: Padding( padding: const EdgeInsets.only(top: 5, left: 10, right: 10), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Row( children: [ Expanded( child: DropdownButton( value: selectedOption, isExpanded: true, items: [ DropdownMenuItem( value: "1", child: Text("1 - $status_0"), ), DropdownMenuItem( value: "2", child: Text("2 - $status_1"), ), ], onChanged: (value) { setState(() { selectedOption = value!; }); }, ), ), Padding( padding: const EdgeInsets.only(left: 10), child: ElevatedButton( onPressed: isLoading ? null : callEmptyCart, style: ButtonStyle( backgroundColor: WidgetStateProperty.all( ColorCommon.colorScheme), ), child: Text("出库", style: TextStyle(color: Colors.white)), ), ), ], ), ], ), ), ); } }, ), ); } }