import 'package:deus_app/common/local/StoreHelper.dart'; import 'package:deus_app/common/utils/ConstantString.dart'; import 'package:deus_app/common/utils/DioUtil.dart'; import 'package:deus_app/common/utils/ToastUtils.dart'; import 'package:deus_app/generated/json/personal_data_count_entity_helper.dart'; import 'package:deus_app/model/personal_data_count_entity.dart'; import 'package:deus_app/page/patrol/patrol_job_page.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import '../device/device_manage_page.dart'; import '../maint/maint_job_page.dart'; class HomePage extends StatefulWidget { static var routeName = '/HomePage'; const HomePage({Key? key}) : super(key: key); @override _MineViewPageState createState() => _MineViewPageState(); } class _MineViewPageState extends State { List items = [ {"name": "今日维保任务", "num": 0}, {"name": "今日巡检任务", "num": 0} ]; List icons = [ { "name": "设备管理", "image": "images/device_manage.png", 'jump': DeviceManagePage.routeName }, { "name": "维保任务", "image": "images/maintenance.png", 'jump': MaintJobPage.routeName }, { "name": "巡检任务", "image": "images/patrol_inspect.png", 'jump': PatrolJobPage.routeName }, {"name": "保修管理", "image": "images/maintenance_manage.png", 'jump': ''}, ]; int alarmCount = 0; @override void initState() { super.initState(); fetchAlbum(); } fetchAlbum() async { var result = await DioUtil().request("personalData/count", method: DioMethod.post); PersonalDataCountEntity entity = personalDataCountEntityFromJson(PersonalDataCountEntity(), result); if (entity.code == 0) { setState(() { items.clear(); items.add({"name": "今日维保任务", "num": entity.data.maintJobCount}); items.add({"name": "今日巡检任务", "num": entity.data.patrolJobCount}); alarmCount = entity.data.alarmCount; }); } else { showToast(entity.msg); } } void registerHandler() {} @override Widget build(BuildContext context) { return Scaffold( extendBodyBehindAppBar: true, appBar: AppBar( shadowColor: Colors.transparent, backgroundColor: Colors.transparent, systemOverlayStyle: SystemUiOverlayStyle.light .copyWith(statusBarColor: Colors.transparent), // title: Text(user != null ? user["nickname"] : "",style:TextStyle(color: Colors.white),), centerTitle: true, elevation: 0.0, toolbarHeight: 0, ), backgroundColor: const Color(0xfff4f6ff), body: Column( children: [ Container( padding: EdgeInsets.only( left: 15, right: 15, top: MediaQuery.of(context).padding.top + 10), height: MediaQuery.of(context).size.width * 0.53, decoration: BoxDecoration( image: DecorationImage( image: AssetImage("images/home_bg.jpg"), fit: BoxFit.cover), ), child: Column( children: [ Row( mainAxisAlignment: MainAxisAlignment.end, children: [ IconButton( icon: Icon(Icons.settings), color: Colors.white, onPressed: () => showToast("text"), ), ], ), Row( children: [ Image.asset( "images/head.png", width: 40, height: 40, ), SizedBox(width: 10), Text( StoreHelper.getStorage(ConstantString.name), style: TextStyle( color: Colors.white, fontWeight: FontWeight.bold, fontSize: 15), ) ], ), SizedBox(height: 20), Row( children: [ SizedBox(width: 50), Text(StoreHelper.getStorage(ConstantString.phone), style: TextStyle( color: Colors.white, fontWeight: FontWeight.bold, fontSize: 18)) ], ), SizedBox(height: 10), Row( children: [ SizedBox(width: 50), Text(StoreHelper.getStorage(ConstantString.orgName), style: TextStyle(color: Color(0xffaaaaaa), fontSize: 15)) ], ), ], ), ), Container( padding: EdgeInsets.all(10), margin: EdgeInsets.all(15), decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(10)), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox(height: 15), Container( width: double.infinity, height: 40, alignment: Alignment.center, decoration: BoxDecoration( color: alarmCount > 0 ? Colors.red : Color(0xff74b900), borderRadius: BorderRadius.circular(10)), child: Text( alarmCount > 0 ? '今日告警数量:$alarmCount' : "当前设备运行正常", style: TextStyle( color: Color(0xffffffff), fontSize: 15))), SizedBox( height: 20, ), Text("待办任务", style: TextStyle(color: Color(0xff000000), fontSize: 18)), SizedBox( height: 10, ), GridView.builder( shrinkWrap: true, padding: const EdgeInsets.only( top: 10, ), gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 1, mainAxisSpacing: 10, crossAxisSpacing: 10, childAspectRatio: MediaQuery.of(context).size.width / 30, ), itemBuilder: (context, index) { Map item = items[index]; return Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text(item["name"], style: TextStyle( color: Color(0xff000000), fontSize: 13)), Text(item["num"].toString(), style: TextStyle( color: Color(0xff000000), fontSize: 13)) ], ); }, itemCount: items.length, ) ], ), ), Container( margin: EdgeInsets.only(left: 15, right: 15), decoration: BoxDecoration(borderRadius: BorderRadius.circular(10)), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ GridView.builder( shrinkWrap: true, padding: const EdgeInsets.only( top: 0, ), gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 3, mainAxisSpacing: 10, crossAxisSpacing: 10, childAspectRatio: (MediaQuery.of(context).size.width / 3 - 60 / 3) / 120, ), itemBuilder: (context, index) { Map item = icons[index]; return GestureDetector( onTap: () => Navigator.pushNamed(context, item['jump']), child: Container( padding: EdgeInsets.all(5), decoration: BoxDecoration( color: Color(0xffffffff), borderRadius: BorderRadius.circular(10)), child: Column( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, children: [ Image.asset( item["image"], width: 60, height: 60, ), SizedBox(height: 10), Text(item["name"].toString(), style: TextStyle( color: Color(0xff000000), fontSize: 13)) ], ), ), ); }, itemCount: icons.length, ) ], ), ), ], )); } }