XuGongTeJi_flutter/lib/page/layout/home.dart

189 lines
6.9 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:logger/logger.dart';
import 'package:wms_app/api_client/monitor.dart';
import 'package:wms_app/page/stockIn/stock_in_normal.dart';
import '../../common/user/login_user.dart';
import '../../utils/dialogUtils.dart';
import '/common/colorCom.dart';
import 'package:bruno/bruno.dart';
import 'package:wms_app/page/stockIn/stock_in_empty.dart';
import 'package:wms_app/page/stockIn/stock_in_buy.dart';
import 'package:wms_app/page/stockOut/stock_out_empty.dart';
import 'package:wms_app/page/stock/check.dart';
import 'package:wms_app/page/pick/pick.dart';
class Home extends StatefulWidget {
const Home({super.key});
@override
State<Home> createState() => _HomePageState();
}
class _HomePageState extends State<Home> {
var logger = Logger(
printer: PrettyPrinter(),
);
List<BrnDoughnutDataItem> stockChartsData = []; // 库存占用情况
int available = 0, all = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
iconTheme: const IconThemeData(color: Colors.white),
centerTitle: true,
backgroundColor: ColorCommon.colorScheme,
title: const Text("WMS移动终端徐工料箱库",
style: TextStyle(color: Colors.white)),
actions: [
IconButton(onPressed: refreshData, icon: const Icon(Icons.refresh))
],
),
drawer: Drawer(
backgroundColor: Colors.white,
child: ListView(
padding: const EdgeInsets.all(0),
children: [
UserAccountsDrawerHeader(
accountName: Text(LoginUser.userName),
accountEmail: const Text("欢迎使用WMS移动终端"),
decoration: BoxDecoration(color: ColorCommon.colorScheme)),
ListTile(
title: const Text("空料箱入库"),
trailing: const Icon(Icons.grain),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const StockInEmpty()));
}),
ListTile(
title: const Text("货位信息码盘"),
trailing: const Icon(Icons.add_box),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const StockInNormal()));
}),
ListTile(
title: const Text("采购有货入库"),
trailing: const Icon(Icons.add_box),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const StockInBuy()));
}),
ListTile(
title: const Text("其他物料入库"),
trailing: const Icon(Icons.add_box),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const StockInNormal()));
}),
ListTile(
title: const Text("生产配盘入库"),
trailing: const Icon(Icons.add_box),
onTap: () {}),
ListTile(
title: const Text("呼叫空托"),
trailing: const Icon(Icons.ac_unit),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const StockOutEmpty()));
}),
ListTile(
title: const Text("出库拣货"),
trailing: const Icon(Icons.back_hand),
onTap: () {
Navigator.push(context,
MaterialPageRoute(builder: (context) => const Pick()));
}),
ListTile(
title: const Text("物料盘点"),
trailing: const Icon(Icons.checklist),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const InventoryCheckPage()));
}),
],
),
),
body: Padding(
padding: const EdgeInsets.only(top: 10, left: 20, right: 20),
child: ListView(children: [
const Text("库存占用情况:"),
Row(children: [
Column(
children: [
BrnDoughnutChart(
padding: const EdgeInsets.all(50),
width: 150,
height: 150,
data: stockChartsData,
showTitleWhenSelected: false),
],
),
Column(children: [
DoughnutChartLegend(
data: stockChartsData,
legendStyle: BrnDoughnutChartLegendStyle.list),
])
])
])));
}
count() async {
BrnLoadingDialog.show(context); // 显示加载动画
MonitorApi.countAvailable().then((response) {
if (response["code"] != 200) {
DialogUtils.showWarningMessage(context, "警告", "服务器请求失败",
btnLabel: "我知道了");
return;
}
final data = jsonDecode(response["data"]);
if (response["code"] == 200) {
setState(() {
available = data["data"]["available_count"];
all = data["data"]["total_count"];
stockChartsData = [
BrnDoughnutDataItem(value: available * 1.0, title: "空闲", color: Colors.green),
BrnDoughnutDataItem(value: (all - available) * 1.0, title: "占用", color: Colors.orange)
];
});
DialogUtils.showSuccessMessage(context, "计数成功", "", btnLabel: "我知道了");
} else {
DialogUtils.showWarningMessage(
context, "警告", "服务器返回失败:${response["message"]}",
btnLabel: "我知道了");
}
}).catchError((err) {
DialogUtils.showErrorMessage(
context, "请求发生错误", "请求服务器发生错误:${err.toString()}",
btnLabel: "我知道了");
}).whenComplete(() {
BrnLoadingDialog.dismiss(context); // 隐藏加载动画
});
}
/// 刷新界面数据
refreshData() {
count();
}
@override
void initState() {
super.initState();
count(); // 在初始化时调用count方法加载数据并显示缓冲动画
}
}