You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

993 lines
39 KiB
Dart

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:hyzp_ybqx511528_xingwen/components/commonFun.dart';
// import 'package:hyzp_ybqx511528_xingwen/pages/Works/DWSP/dw_list_sound.dart';
// import 'package:hyzp_ybqx511528_xingwen/pages/Works/DWSP/dw_sound.dart';
import 'package:hyzp_ybqx511528_xingwen/pages/Works/DWSP/dwsp_getList.dart';
import 'package:hyzp_ybqx511528_xingwen/pages/Works/HYSH/hysh_getList_fliter.dart';
import 'package:hyzp_ybqx511528_xingwen/pages/Works/HYSH/hysh_getList_new.dart';
import 'package:hyzp_ybqx511528_xingwen/pages/Works/SBBJ/sbbj_getList.dart';
import 'package:hyzp_ybqx511528_xingwen/pages/Works/SBGL/dwxx_getList.dart';
import 'package:hyzp_ybqx511528_xingwen/pages/Works/TJXX/tj_data.dart';
import 'package:hyzp_ybqx511528_xingwen/pages/Works/TJXX/today_list.dart';
import 'package:hyzp_ybqx511528_xingwen/pages/Works/TJXX/zptj_bar_chart.dart';
import 'package:hyzp_ybqx511528_xingwen/pages/Works/TJXX/zptj_bar_chart_one.dart';
import 'package:hyzp_ybqx511528_xingwen/pages/Works/TJXX/zptj_page.dart';
import 'package:hyzp_ybqx511528_xingwen/services/EventBus.dart';
import 'package:url_launcher/url_launcher.dart';
import '../../components/hyxx_data_handle.dart';
import '../Works/DWDT/basic_map.dart';
import '../Works/LED_XSXX/led_xsxx_content.dart';
///flutter中如何获取子类Widget并调用它的方法 萤火虫离别的礼物 2019.08.07 15:46:08 https://www.jianshu.com/p/b16f70dd692c
//在flutter中开发中会发现当子类Widget是StatefulWidget类型的时候想要获取它的State并调用State中的方法感觉无从下手。
// 不像是在iOS中可以直接调用一个类的公开的方法flutter可以通过key来实现。每个Widget都是唯一标识的。此唯一标识对应于可选的Key参数。
// 如果省略Flutter将为您生成一个。key主要分为四种GlobalKeyLocalKeyUniqueKey或ObjectKeyGlobalKey确保key是在整个应用程序唯一的
// 这次我们就要使用它来实现。我们需要给子Widget定义一个唯一的GlobalKey然后根据这个key获取到这个Widget进行相关的操作下面是相关的代码
//这里就是关键的代码定义一个key
//GlobalKey<MyFijkPanelWidgetBuilderState> _myFijkPanelWidgetBuilderStateKey = new GlobalKey<MyFijkPanelWidgetBuilderState>();
class Page1_Works extends StatefulWidget {
Page1_Works({@required this.pageType, this.title, Key key}) : super(key: key);
//该美工优化的页面 Page1_Works是供多个页面共享的代码框架。不同的页面以 PageType 字段进行区分
String pageType = ''; //'home_page'、'statis_page'、'device_page'
String title = '';
@override
_Page1_WorksState createState() => _Page1_WorksState();
}
//class _Page1WorkState extends State<Page1Work> with WidgetsBindingObserver, AutomaticKeepAliveClientMixin {
class _Page1_WorksState extends State<Page1_Works>
with WidgetsBindingObserver, AutomaticKeepAliveClientMixin {
//Begin底部导航栏使用PageView方式配置每页面的保持状态。必须添加继承with AutomaticKeepAliveClientMixin
//try_setState(); //避免异常报错
try_setState() {
try {
setState(() {});
} catch (e) {
print('setState(() {})异常:${e}');
}
}
@override
// TODO: implement wantKeepAlive
bool get wantKeepAlive => true;
//End底部导航栏使用PageView方式配置每页面的保持状态
// final FijkPlayer player = FijkPlayer();
// bool bFirstPlay;
@override
void initState() {
// getDataListFun().then((list) {
// _listBtnItems = list;
// try_setState();
// });
//startGetStatisData(); //已经在 _MyAppState 中提前开始获取统计数据
updateStatisData();
//监听统计数据改变事件
eventBus.on<StatisDataUpdate>().listen((event) {
print(event.str);
updateStatisData();
});
//监听 选择LED点位 更新事件
eventBus.on<SelectLedDwUpdateEvent>().listen((event) async {
print(event.str);
try_setState();
});
super.initState();
}
// 更新工作页面的今日统计数据
Future updateStatisData() async {
if (-1 == mapStatisInfo['今日抓拍']) {
getAllSumNew().then((_) {
try_setState();
});
} else {
try_setState();
}
// if (listZptjStatisAlone.length >= dwSum && -1 == mapStatisInfo['今日抓拍']) {
// getAllSum('today', listZptjStatisAlone).then((value) {
// //mapStatisInfo['今日抓拍'] = value[1];
// listTodayZpjl = value[2];
// //try_setState();
// });
// }
//
// if (listTodayShtj.length >= dwSum && -1 == mapStatisInfo['今日初审']) {
// getAllSum('csnum', listTodayShtj).then((value) {
// //mapStatisInfo['今日初审'] = value[1];
// listTodayChjl = value[2];
// //try_setState();
// });
// getAllSum('fsnum', listTodayShtj).then((value) {
// //mapStatisInfo['今日复审'] = value[1];
// listTodayFhjl = value[2];
// //try_setState();
// });
// getAllSum('sends', listTodayShtj).then((value) {
// //mapStatisInfo['今日推送'] = value[1];
// listTodayTsjl = value[2];
// //try_setState();
// });
// }
//车流量统计数据用 getAllSumCll() 单独处理
// if (listClltjStatisAlone.length >= dwSum && -1 == mapStatisInfo['今日车流']) {
// getAllSumCll('today', listClltjStatisAlone).then((value) {
// mapStatisInfo['今日车流'] = value[1] ~/ 10000;
// try_setState();
// });
// }
}
Future<void> sysPop() async {
await SystemChannels.platform.invokeMethod('SystemNavigator.pop');
}
_Page1_WorksState();
@override
void dispose() {
super.dispose();
}
// double getHeight() {
// double _height = 0;
// for (double h in listHeight) {
// _height += h;
// }
// print("_height1 = $_height"); // 767
// _height += ScreenUtil().statusBarHeight * ScreenUtil().pixelRatio; // 系统顶部状态栏高度
// _height += ScreenUtil().bottomBarHeight * ScreenUtil().pixelRatio; // 系统底部工具栏高度
// //R:\FlutterProject\FlutterProject33\hyzp_ybqx\lib\pages\tabs\Tabs.dart中iconSize: ScreenUtil().setSp(70),
// _height += (kBottomNavigationBarHeight * 3 + 8); // 底部导航栏的高度this.elevation = 8.0,高度 默认8.0
// //_height += (68 * 3); // 底部导航栏的高度
// print("_height2 = $_height"); // 1015
//
// _height = ScreenUtil().screenHeight * ScreenUtil().pixelRatio - _height;
// // print("ScreenUtil().screenHeight = ${ScreenUtil().screenHeight}"); //640.0
// // print("ScreenUtil().pixelRatio = ${ScreenUtil().pixelRatio}"); // 3.0
// print("_height3 = $_height"); // S7905 / 3 = 301 OK
// // S7 OK
// // I/flutter (22790): _height1 = 767.0
// // I/flutter (22790): _height2 = 1015.0
// // I/flutter (22790): _height3 = 905.0
//
// // S10 OK
// // I/flutter (23478): _height1 = 767.0
// // I/flutter (23478): _height2 = 1055.0
// // I/flutter (23478): _height3 = 1081.0
//
// // ARS AL00 OK
// // I/flutter ( 9979): _height1 = 767.0
// // I/flutter ( 9979): _height2 = 1039.0
// // I/flutter ( 9979): _height3 = 1101.0
//
// // AS ADV OK
// // I/flutter ( 5464): _height1 = 767.0
// // I/flutter ( 5464): _height2 = 1006.0
// // I/flutter ( 5464): _height3 = 788.0
//
// return _height;
// }
List<double> listHeight = <double>[
484,
46,
168,
69,
];
@override
Widget build(BuildContext context) {
// double btnHeight1 = 80; //第一按钮行高度
// double btnHeight2 = 160; //第二按钮行高度
// double btnHeight3 = 302; //350、303 S7越界。第二按钮行高度370越界365 ARS AL00不越界
// int btnCount = 4; //每行按钮个数
// var mediaSize = MediaQuery.of(context).size;
// double ratio2 = (mediaSize.width / btnCount) / (btnHeight2 / 2);
//注意必须在返回Widget的覆盖构造函数中初始化在其他地方初始化会报错失败
//在使用之前请设置好设计稿的宽度和高度,传入设计稿的宽度和高度(单位px)
//一定在MaterialApp的home中的页面设置(即入口文件,只需设置一次),以保证在每次使用之前设置好了适配尺寸:
//默认 width : 1080px , height:1920px , allowFontScaling:false
//ScreenUtil.init(context);
// double myWidth = mediaSize.width;
// double myHeight = mediaSize.width * 9 / 16;
// print('My_viewSize: Width-$myWidth, Height-$myHeight');
// double ratio = 1.0;
//getHeight();
return WillPopScope(
child: Container(
decoration: new BoxDecoration(
color: Color.fromRGBO(244, 244, 244, 1), //设置背景色
),
child: Column(
children: <Widget>[
Container(
height: ScreenUtil().setHeight(listHeight[0]), //484, 530 - 46
child: Stack(
children: [
//1、第1行文字
Positioned(
child: Container(
height: ScreenUtil().setHeight(324), //181
alignment: Alignment.topCenter,
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.centerLeft,
end: Alignment.centerRight,
colors: [
Color.fromRGBO(12, 186, 156, 1),
Color.fromRGBO(39, 127, 235, 1),
],
),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
//crossAxisAlignment: CrossAxisAlignment.start, //用的比较少
children: <Widget>[
FlatButton(
child: Container(
child: Row(
children: [
Padding(
padding: EdgeInsets.only(top: ScreenUtil().setHeight(10)),
child: 0 == service_tel.length
? Text("")
: Image.asset(
'assets/images/形状 2.png',
height: ScreenUtil().setHeight(45),
),
),
Text(0 == service_tel.length ? " " : " 客服热线",
style: TextStyle(fontSize: 16, color: Colors.white)),
],
),
),
onPressed: () => launch("tel://18784678300"),
),
SizedBox(
width: ScreenUtil().setWidth(45),
),
Expanded(
child: Text(widget.title,
style: TextStyle(fontSize: 20.0, color: Colors.white)),
),
Container(
child: InkWell(
child: Image.asset(
'assets/images/刷新.png',
height: ScreenUtil().setHeight(45),
color: Colors.white,
),
onTap: () {
//刷新统计数据
mapStatisInfo.forEach((key, value) {
mapStatisInfo[key] = -1;
});
listDwinfoGetList2.clear();
startGetStatisDataNew();
Fluttertoast.showToast(
msg: '正在刷新统计数据...',
toastLength: Toast.LENGTH_LONG,
gravity: ToastGravity.BOTTOM,
);
try_setState();
},
),
),
SizedBox(
width: ScreenUtil().setWidth(60),
),
],
),
),
),
//2、第2行装饰
Align(
alignment: Alignment.bottomLeft,
child: Container(
alignment: Alignment(0, 1),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
//crossAxisAlignment: CrossAxisAlignment.end,
children: [
Container(
padding: EdgeInsets.only(bottom: ScreenUtil().setHeight(18)),
height: ScreenUtil().setHeight(310),
decoration: BoxDecoration(
color: Color.fromRGBO(62, 88, 231, 1),
borderRadius: BorderRadius.horizontal(right: Radius.circular(20)),
),
//color: Colors.pinkAccent,
width: ScreenUtil().setWidth(34),
alignment: Alignment.centerRight,
),
getImageWidget(),
Container(
height: ScreenUtil().setHeight(310),
decoration: BoxDecoration(
color: Color.fromRGBO(113, 39, 203, 1),
borderRadius: BorderRadius.horizontal(left: Radius.circular(20)),
),
//color: Colors.pinkAccent,
width: ScreenUtil().setWidth(34),
alignment: Alignment.centerRight,
),
],
),
),
),
],
),
),
//3、第3行统计信息
SizedBox(height: ScreenUtil().setHeight(listHeight[1])), // 46
Container(
padding: EdgeInsets.only(bottom: ScreenUtil().setHeight(18)),
alignment: Alignment.center,
width: ScreenUtil().setWidth(1022),
height: ScreenUtil().setHeight(listHeight[2]),
//168
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(Radius.circular(10)),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.end,
children: [
getStatisInfo(
'今日抓拍', listAllStatisData.length < dwSum ? -1 : mapStatisInfo['今日抓拍']),
getVerticalDivider(),
getStatisInfo(
'今日初审', listAllStatisData.length < dwSum ? -1 : mapStatisInfo['今日初审']),
getVerticalDivider(),
getStatisInfo(
'今日复审', listAllStatisData.length < dwSum ? -1 : mapStatisInfo['今日复审']),
getVerticalDivider(),
getStatisInfo(
'今日推送', listAllStatisData.length < dwSum ? -1 : mapStatisInfo['今日推送']),
getVerticalDivider(),
getStatisInfo(
'今日车流', listAllStatisData.length < dwSum ? -1 : mapStatisInfo['今日车流']),
// getStatisInfo(
// '今日抓拍', listZptjStatisAlone.length < dwSum ? -1 : mapStatisInfo['今日抓拍']),
// getVerticalDivider(),
// getStatisInfo('今日初审', listTodayShtj.length < dwSum ? -1 : mapStatisInfo['今日初审']),
// getVerticalDivider(),
// getStatisInfo('今日复审', listTodayShtj.length < dwSum ? -1 : mapStatisInfo['今日复审']),
// getVerticalDivider(),
// getStatisInfo('今日推送', listTodayShtj.length < dwSum ? -1 : mapStatisInfo['今日推送']),
// getVerticalDivider(),
// getStatisInfo(
// '今日车流', listClltjStatisAlone.length < dwSum ? -1 : mapStatisInfo['今日车流']),
],
),
),
SizedBox(height: ScreenUtil().setHeight(listHeight[3])), // 69
//4、第4行圆角按钮
Expanded(
//color: Colors.black,
//height: ScreenUtil().setHeight(getHeight()),
// S7905
//height: ScreenUtil().setHeight(908),
//btnHeight3, // 302
//padding: EdgeInsets.all(10),
//padding: EdgeInsets.fromLTRB(ScreenUtil().setWidth(76), 0, ScreenUtil().setWidth(76), 0),
//padding: EdgeInsets.fromLTRB(0, 0, 0, 0),
//color: Color.fromRGBO(224, 224, 224, 1),
//alignment: const Alignment(0, -1),
// GridView 控制太麻烦,动态生成必须用 GridView ,静态组件可以不用 GridView
// child: GridView.custom(
// gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
// crossAxisCount: btnCount,
// mainAxisSpacing: ScreenUtil().setWidth(0),
// crossAxisSpacing: ScreenUtil().setHeight(0),
// childAspectRatio: 1,
// ),
// childrenDelegate: SliverChildBuilderDelegate((context, position) {
// //圆角按钮 155 * 155 px
// return getItemContainer(listData4[position]);
// //listData4[position];
// }, childCount: listData4.length),
// ),
child: getBtnGroup(),
),
],
),
),
onWillPop: () {
// if (player.state == FijkState.started) {
// player.pause();
// }
//解决在Page1_Work.dart页面按系统返回键总是报错flutter keeps stopping的问题
//player.stop();
sysPop();
},
);
}
double _left = 30;
double _intervalHor = 75;
double _intervalVer = 58;
//Size _itemSize = Size(211, 230);
Size _itemSize = Size(211, 230);
List<Widget> _listBtnItems = [];
Widget getBtnGroup() {
return GridView.count(
mainAxisSpacing: ScreenUtil().setWidth(_intervalVer), //垂直间距
//crossAxisSpacing: ScreenUtil().setHeight(_intervalHor), //水平间距
//childAspectRatio: _itemSize.width / _itemSize.height,
padding:
EdgeInsets.only(left: ScreenUtil().setWidth(_left), right: ScreenUtil().setWidth(_left)),
crossAxisCount: 4, //一行的 Widget 数量
children: getDataListFun(),
);
}
Future getBtnGroup0() async {
List<Widget> listData4 = getDataListFun();
return Column(
children: [
Row(
//mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
SizedBox(width: ScreenUtil().setWidth(_left)),
listData4[0],
//SizedBox(width: ScreenUtil().setWidth(101)),
SizedBox(width: ScreenUtil().setWidth(_intervalHor)),
listData4[1],
SizedBox(width: ScreenUtil().setWidth(_intervalHor)),
listData4[2],
SizedBox(width: ScreenUtil().setWidth(_intervalHor)),
listData4[3],
],
),
SizedBox(height: ScreenUtil().setHeight(78)),
Row(
//mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
SizedBox(width: ScreenUtil().setWidth(_left)),
listData4[4],
SizedBox(width: ScreenUtil().setWidth(_intervalHor)),
listData4[5],
SizedBox(width: ScreenUtil().setWidth(_intervalHor)),
listData4[6],
SizedBox(width: ScreenUtil().setWidth(_intervalHor)),
listData4[7],
],
),
],
);
}
Widget getVerticalDivider() {
return SizedBox(
width: 1,
height: ScreenUtil().setHeight(125),
child: DecoratedBox(
decoration: BoxDecoration(color: Colors.black26),
),
);
}
Widget getStatisInfo(String name, double data) {
return InkWell(
child: Container(
alignment: Alignment(0, 0),
//padding: EdgeInsets.only(top: ScreenUtil().setHeight(15)),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
SizedBox(height: ScreenUtil().setHeight(10)),
Text(name,
style: TextStyle(fontSize: 12, color: Colors.black), textAlign: TextAlign.center),
SizedBox(height: ScreenUtil().setHeight(4)),
Row(
children: [
Text(
data < 0 ? '...' : '${data.toStringAsFixed('今日车流' == name ? 2 : 0)}',
style: TextStyle(
fontSize: 20,
color: Color.fromRGBO(48, 135, 255, 1),
fontWeight: FontWeight.bold),
),
'今日车流' == name
? Container(
padding: EdgeInsets.only(top: ScreenUtil().setHeight(8)),
child: Text('', style: TextStyle(fontSize: 10, color: Colors.black)),
)
: SizedBox.shrink(),
],
),
],
),
),
onTap: data < 0
? null
: () {
switch (name) {
case '今日抓拍':
// Navigator.of(context)
// .push(MaterialPageRoute(builder: (context) => ZptjBarChart(statisType: 'zptj')));
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => TodayList(todayListLx: 'jrzp')));
break;
case '今日初审':
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => TodayList(todayListLx: 'hycs')));
break;
case '今日复审':
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => TodayList(todayListLx: 'hyfh')));
break;
case '今日推送':
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => TodayList(todayListLx: 'tsjj')));
break;
case "今日车流":
Navigator.of(context).push(MaterialPageRoute(
builder: (context) => ZptjBarChartOne(statisType: 'clltj')));
break;
default:
break;
}
},
onLongPress: data < 0
? null
: () {
switch (name) {
case '今日抓拍':
Navigator.of(context)
.push(MaterialPageRoute(builder: (context) => ZptjPage(statisType: 'zptj')));
break;
case '今日初审':
case '今日复审':
case '今日推送':
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => ZptjPage(statisType: 'sh_hyc_tj')));
break;
case "今日车流":
Navigator.of(context)
.push(MaterialPageRoute(builder: (context) => ZptjPage(statisType: 'clltj')));
break;
default:
break;
}
},
);
}
//自定义带说明图标按钮函数。点击说明文字有反应
Widget _getIconAndTextButton(
{String text, IconData icon, Color iconColor = Colors.blueAccent, var onPress = null}) {
return Container(
width: 60,
height: 60,
alignment: const Alignment(0, 1),
child: FlatButton(
padding: EdgeInsets.all(0),
onPressed: onPress,
color: Colors.transparent,
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
SizedBox(height: 2),
Container(
alignment: Alignment(0, -1),
height: 36,
width: 36,
decoration: BoxDecoration(
color: Colors.white,
),
child: Icon(
icon,
size: 32,
color: iconColor,
),
),
//SizedBox(height: 2),
Text(text,
//textAlign: TextAlign.center,
style: TextStyle(
fontSize: 12.0,
)),
],
),
),
);
}
//自定义带说明图片按钮函数。点击说明文字有反应
//Flutter按钮添加背景图片及文字的一种方法记录下上代码
//原文链接https://blog.csdn.net/WC270607563/article/details/103148574
Widget _getPicAndTextButton(String text, String imgpath, var onPress,
{Size imageSize, IconData icon, Color iconColor = Colors.white}) {
if (null == imageSize) {
imageSize = Size(ScreenUtil().setWidth(75), ScreenUtil().setHeight(75));
}
Color _bkgColor;
switch (text) {
case "黑烟复审":
case "视频播放":
case "审核图表":
case "审核统计":
case "今日抓拍":
case "点位喊话":
_bkgColor = Color.fromRGBO(36, 206, 192, 1); //绿色
break;
case "抓拍图表":
case "抓拍统计":
case "推送交警":
case "报警信息":
case "今日推送":
case "LED字幕":
_bkgColor = Color.fromRGBO(79, 118, 230, 1); //深蓝
break;
case "点位视频":
case "车流量图表":
case "今日初审":
_bkgColor = Color.fromRGBO(116, 139, 161, 1); //深灰
break;
default:
_bkgColor = Color.fromRGBO(80, 159, 245, 1); //亮蓝
break;
}
//155 + 35 + 12 + 6 = 208
return InkWell(
child: Container(
width: ScreenUtil().setWidth(_itemSize.width),
height: ScreenUtil().setHeight(_itemSize.height),
alignment: Alignment.center,
//color: Colors.red,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Container(
width: ScreenUtil().setWidth(155),
//S10 2280*1080在S10正方形变长是正常的。因为在 ScreenUtilInit 是按 1080, 1920
//ScreenUtilInit(designSize: Size(1080, 1920), //安卓手机宽高尺寸
//通过 sizeWindowPhysicalSize = window.physicalSize; 自动适应安卓手机系统分辨率,解决 S10 手机正方形变形问题
height: ScreenUtil().setHeight(155),
//color: Colors.blue,
decoration: BoxDecoration(
color: '车流量日统计' == text && cllRStatisDataGeting ? Colors.grey : _bkgColor,
borderRadius: BorderRadius.all(Radius.circular(15)),
),
alignment: Alignment.center,
child: imgpath.isNotEmpty
? Image.asset(imgpath,
fit: BoxFit.scaleDown,
color: Colors.white,
width: imageSize.width,
height: imageSize.height)
: Icon(
icon,
size: imageSize.width,
color: iconColor,
),
),
SizedBox(height: ScreenUtil().setWidth(0)),
Text(text, style: TextStyle(fontSize: 14)),
],
),
),
//cllRStatisDataGeting = true; //正在获取车流量日统计数据,禁止重入
onTap: '车流量日统计' == text && cllRStatisDataGeting ? null : onPress,
);
}
Widget _getPicAndTextButtonTest(String text, String imgpath, var onPress, {Size imageSize}) {
if (null == imageSize) {
imageSize = Size(ScreenUtil().setWidth(75), ScreenUtil().setHeight(75));
}
//155 + 35 + 12 = 202
return InkWell(
child: Container(
width: ScreenUtil().setWidth(155),
height: ScreenUtil().setHeight(155),
alignment: Alignment.center,
color: Colors.red,
),
onTap: onPress,
);
}
//该美工优化的页面 Page1_Works是供多个页面共享的代码框架。不同的页面以 PageType 字段进行区分
//String pageType = ''; //'home_page'、'statis_page'、'device_page'
//生成功能区按钮List
List<Widget> getDataListFun() {
switch (widget.pageType) {
case 'home_page':
return getDataListFun_home_page();
break;
case 'statis_page':
return getDataListFun_statis_page();
break;
case 'device_page':
return getDataListFun_device_page();
break;
}
}
//生成功能区按钮List
List<Widget> getDataListFun_device_page() {
List<Widget> list = [];
list.add(
_getPicAndTextButton("点位信息", "assets/images/1 (194).png", () {
Navigator.of(context).push(MaterialPageRoute(builder: (context) => DwxxGetList()));
}),
);
list.add(
_getPicAndTextButton("报警信息", "assets/images/1 (219).png", () {
Navigator.of(context)
.push(MaterialPageRoute(builder: (context) => SbbjGetList(hyshlx: 'sbbj')));
}),
);
list.add(
_getPicAndTextButton("点位视频", "assets/images/monitor2.png", () {
Navigator.of(context)
.push(MaterialPageRoute(builder: (context) => DwspGetList(hyshlx: 'dwsp')));
}),
);
return list;
}
//生成功能区按钮List
List<Widget> getDataListFun_statis_page() {
List<Widget> list = [];
list.add(
_getPicAndTextButton("抓拍图表", "assets/images/statis_blue.png", () {
Navigator.of(context)
.push(MaterialPageRoute(builder: (context) => ZptjBarChart(statisType: 'zptj')));
}),
);
list.add(
_getPicAndTextButton("审核图表", "assets/images/statis_red.png", () {
Navigator.of(context)
.push(MaterialPageRoute(builder: (context) => ZptjBarChart(statisType: 'sh_hyc_tj')));
}),
);
list.add(
_getPicAndTextButton("车流量图表", "assets/images/statis_green.png", () {
Navigator.of(context)
.push(MaterialPageRoute(builder: (context) => ZptjBarChartOne(statisType: 'clltj')));
}),
);
list.add(
_getPicAndTextButton("抓拍统计", "assets/images/图层 11.png", () {
Navigator.of(context)
.push(MaterialPageRoute(builder: (context) => ZptjPage(statisType: 'zptj')));
}),
);
list.add(
_getPicAndTextButton("审核统计", "assets/images/1 (15).png", () {
Navigator.of(context)
.push(MaterialPageRoute(builder: (context) => ZptjPage(statisType: 'sh_hyc_tj')));
}),
);
list.add(
_getPicAndTextButton("车流量统计", "assets/images/1 (84).png", () {
Navigator.of(context)
.push(MaterialPageRoute(builder: (context) => ZptjPage(statisType: 'clltj')));
}),
);
list.add(
_getPicAndTextButton(
"今日抓拍",
'',
listZptjStatisAlone.length < dwSum
? null
: () {
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => TodayList(todayListLx: 'jrzp')));
},
icon: Icons.camera_alt_outlined),
);
list.add(
_getPicAndTextButton(
"今日初审",
'',
listTodayShtj.length < dwSum
? null
: () {
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => TodayList(todayListLx: 'hycs')));
},
icon: Icons.preview_outlined),
);
list.add(
_getPicAndTextButton(
"今日复审",
'',
listTodayShtj.length < dwSum
? null
: () {
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => TodayList(todayListLx: 'hyfh')));
},
icon: Icons.rate_review_outlined),
);
list.add(
_getPicAndTextButton(
"今日推送",
'',
listTodayShtj.length < dwSum
? null
: () {
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => TodayList(todayListLx: 'tsjj')));
},
icon: Icons.format_list_numbered_outlined),
);
// list.add(
// _getPicAndTextButton("车流量日统计", "assets/images/车流量日统计.png", () {
// Navigator.of(context).push(MaterialPageRoute(
// builder: (context) => ZptjBarEchartsTrinityNew(statisType: 'cllrtj')));
// }),
// );
return list;
}
//生成功能区按钮List
List<Widget> getDataListFun_home_page() {
List<Widget> list = [];
list.add(
_getPicAndTextButton("黑烟初审", "assets/images/聚焦.png", () {
print('Icons.videocam');
//hyshlx为黑烟审核类型用于在同一套代码中处理'hycs'黑烟初审、'hyfh'黑烟复审
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => HyshGetListNew(hyshlx: 'hycs', title: '黑烟初审')));
}),
);
list.add(
_getPicAndTextButton("黑烟复审", "assets/images/盾 密码 安全.png", () {
print('Icons.videocam');
//hyshlx为黑烟审核类型用于在同一套代码中处理'hycs'黑烟初审、'hyfh'黑烟复审
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => HyshGetListNew(hyshlx: 'hyfh', title: '黑烟复审')));
}),
);
list.add(
_getPicAndTextButton("推送交警", "assets/images/警察.png", () {
print('Icons.videocam');
// Navigator.of(context).push(MaterialPageRoute(
// builder: (context) => TsjjGetList(
// tsjjlx: 'tsjj',
// )));
Navigator.of(context).push(MaterialPageRoute(
builder: (context) => HyshGetListFliter(hyshlx: 'tsjj', title: '推送交警')));
}),
);
// list.add(
// _getPicAndTextButton("复审查询", "assets/fun_icons/fun_icon_4.png", () {
// print('Icons.videocam');
// Navigator.of(context).push(MaterialPageRoute(builder: (context) => TsjjGetList(tsjjlx: 'fhcx',)));
// }),
// );
list.add(
_getPicAndTextButton("非黑烟查询", "assets/images/1 (104).png", () {
print('Icons.videocam');
//Navigator.of(context).push(MaterialPageRoute(builder: (context) => FhycxGetList()));
Navigator.of(context).push(MaterialPageRoute(
//builder: (context) => WzxxGetList(hyshlx: 'fhycx')));
builder: (context) => HyshGetListFliter(hyshlx: 'fhycx', title: '非黑烟查询')));
}),
);
// list.add(
// _getPicAndTextButton("违章信息", "assets/fun_icons/fun_icon_5.png", () {
// //Navigator.of(context).push(MaterialPageRoute(builder: (context) => WzxxGetList()));
// Navigator.of(context)
// .push(MaterialPageRoute(builder: (context) => WzxxGetList(hyshlx: 'wzxx')));
// }),
// );
list.add(
_getPicAndTextButton("LED字幕", "assets/images/LED.png", () {
print('LED显示信息');
// Navigator.of(context)
// .push(MaterialPageRoute(builder: (context) => LedXsxxGetList(hyshlx: 'led_xsxx')));
//应公司要求改为打开LED字幕后直接显示点位选择那个界面用户可以手动切换进行设置
Navigator.of(context).push(MaterialPageRoute(
builder: (context) => LedXsxxContent(
title: 'LED显示信息',
sbgllx: 'led_xsxx', //设备管理类型LED显示信息
id: 1,
)));
}),
);
list.add(
_getPicAndTextButton("点位地图", 'assets/images/1 (177).png', () {
print('点位地图');
Navigator.of(context)
.push(MaterialPageRoute(builder: (context) => BasicMap(hyshlx: 'dwdt', title: "点位地图")));
}),
);
list.add(
_getPicAndTextButton("点位视频", "assets/images/monitor2.png", () {
print('点位视频');
Navigator.of(context)
.push(MaterialPageRoute(builder: (context) => DwspGetList(hyshlx: 'dwsp')));
}),
);
// list.add(
// _getPicAndTextButton("点位喊话", "assets/images/点位喊话.png", () {
// print('点位喊话');
// Navigator.of(context).push(MaterialPageRoute(builder: (context) => DwListSound()));
// }),
// );
// list.add(
// _getPicAndTextButton("视频播放", 'assets/images/播放 (1).png', () {
// print('视频播放');
// urlnew =
// "http://www.yibinu.edu.cn/__local/5/35/DF/264049B7E978EEE2F5849688986_05D4A6FE_152CDB8C.mp4?e=.mp4";
// Navigator.of(context).push(MaterialPageRoute(builder: (context) => PlayerProNew()));
// }),
// );
//填充空白
//list.add(null);
// list.add(
// _getPicAndTextButton("X5视频", "assets/images/monitor2.png", () {
// print('X5视频');
// Navigator.of(context)
// .push(MaterialPageRoute(builder: (context) => X5WebviewPage()));
// }),
// );
return list;
}
//生成容器部件
Widget getItemContainer0(Widget item) {
return Container(
width: 5.0,
height: 5.0,
alignment: Alignment.center,
child: item,
color: Colors.white,
);
}
//生成容器部件
Widget getItemContainer(Widget item) {
return Container(
decoration: BoxDecoration(
//color: Colors.blue,
borderRadius: BorderRadius.all(Radius.circular(20)),
),
// width: 3.0,
// height: 3.0,
alignment: Alignment.center,
child: item,
//color: Colors.blue,
);
}
}