|
|
|
|
@ -1,873 +0,0 @@
|
|
|
|
|
//import '../../../widget/player_pro.dart';
|
|
|
|
|
|
|
|
|
|
import 'package:cached_network_image/cached_network_image.dart';
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
import 'package:flutter_drag_scale/flutter_drag_scale.dart';
|
|
|
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
|
|
|
import 'package:hyzp_ybqx/widget/my_superplayer.dart';
|
|
|
|
|
import 'package:keyboard_avoider/keyboard_avoider.dart';
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
import '../../../components/commonFun.dart';
|
|
|
|
|
import '../../../components/doJSON.dart';
|
|
|
|
|
import '../../../components/hyxx_data_handle.dart';
|
|
|
|
|
import 'package:flustars/flustars.dart' as flustars; //该组件中有ScreenUtil
|
|
|
|
|
|
|
|
|
|
// "today": {
|
|
|
|
|
// "total": 4,
|
|
|
|
|
// "data": [
|
|
|
|
|
// {
|
|
|
|
|
// "id": 428549,
|
|
|
|
|
// "car_number": "川15A2563",
|
|
|
|
|
// "cpys": "绿色",
|
|
|
|
|
// "zpsj": "2021-04-04 11:31:11",
|
|
|
|
|
// "dwip": "172.16.3.3",
|
|
|
|
|
// "dwms": "岷江南路森林小区附近",
|
|
|
|
|
// "cplx": "农用车",
|
|
|
|
|
// "lgmzs": 3,
|
|
|
|
|
// "pic_url": "/wwwroot/admin/Api/wwwroot/public/uploads/e936524e92f90541cbaeca3b092c95be.jpg",
|
|
|
|
|
// "video_url": "video/3_6063_20210404_113111_川15A2563.mp4"
|
|
|
|
|
// },
|
|
|
|
|
|
|
|
|
|
class TodayListZpjlContentNew extends StatefulWidget {
|
|
|
|
|
TodayListZpjlContentNew({
|
|
|
|
|
@required this.hyshlx,
|
|
|
|
|
@required this.index,
|
|
|
|
|
// @required this.num,
|
|
|
|
|
@required this.text,
|
|
|
|
|
// @required this.mapZpjl,
|
|
|
|
|
this.tsztText = '',
|
|
|
|
|
Key key,
|
|
|
|
|
}) : super(key: key);
|
|
|
|
|
String hyshlx;
|
|
|
|
|
|
|
|
|
|
// String num;
|
|
|
|
|
int index;
|
|
|
|
|
String text;
|
|
|
|
|
|
|
|
|
|
// Map mapZpjl;
|
|
|
|
|
String tsztText;
|
|
|
|
|
|
|
|
|
|
_TodayListZpjlPageState createState() => _TodayListZpjlPageState();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//用TabController实现顶部tab切换
|
|
|
|
|
class _TodayListZpjlPageState extends State<TodayListZpjlContentNew> {
|
|
|
|
|
//try_setState(); //避免如下异常报错
|
|
|
|
|
try_setState() {
|
|
|
|
|
try {
|
|
|
|
|
if (mounted) {
|
|
|
|
|
setState(() {});
|
|
|
|
|
}
|
|
|
|
|
} catch (e) {
|
|
|
|
|
print('setState(() {})异常:${e}');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dispose() {
|
|
|
|
|
super.dispose();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BuildContext _context;
|
|
|
|
|
|
|
|
|
|
//flutter_screenUtil 4.x 用法,ScreenUtil.screenWidth (sdk>=2.6 : 1.sw) //设备宽度
|
|
|
|
|
double _screenWidth = 1.sw;
|
|
|
|
|
|
|
|
|
|
double _marginLeft = 25;
|
|
|
|
|
double _marginCenter = 35;
|
|
|
|
|
double _fontSize = 16;
|
|
|
|
|
double _widthLeft = 40; // = _screenWidth / 3;
|
|
|
|
|
double _iconSize = 18;
|
|
|
|
|
double _stampSize = 100;
|
|
|
|
|
double _listTileHeight = 30;
|
|
|
|
|
Color _iconColor = Colors.blue;
|
|
|
|
|
double _marginVer = 10;
|
|
|
|
|
|
|
|
|
|
Map _mapTsjjGetTsStatus = {};
|
|
|
|
|
|
|
|
|
|
Map mapName = {};
|
|
|
|
|
|
|
|
|
|
int listLen = 0;
|
|
|
|
|
String num;
|
|
|
|
|
Map mapZpjl;
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
void initState() {
|
|
|
|
|
_context = context;
|
|
|
|
|
_widthLeft = _screenWidth / 2.6;
|
|
|
|
|
//getListFlields();
|
|
|
|
|
|
|
|
|
|
//得到字段名称
|
|
|
|
|
mapName['plate_id'] = widget.hyshlx == 'jrzp' ? 'car_number' : 'plate_id';
|
|
|
|
|
mapName['plate_color'] = widget.hyshlx == 'jrzp' ? 'cpys' : 'plate_color';
|
|
|
|
|
|
|
|
|
|
getZpjlData(); // 得到 index 对应的今日抓拍记录数据
|
|
|
|
|
super.initState();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
getZpjlData() async {
|
|
|
|
|
listLen = listTodayList.length;
|
|
|
|
|
num = '(${widget.index + 1}/${listLen})';
|
|
|
|
|
mapZpjl = listTodayList[widget.index];
|
|
|
|
|
|
|
|
|
|
// 获取网络图片尺寸,getMediaUrl(_mapGetTsjjGetData['pic_url'])
|
|
|
|
|
await flustars.WidgetUtil.getImageWH(url: getMediaUrl(mapZpjl['pic_url'])).then((rect) {
|
|
|
|
|
if (null != rect) {
|
|
|
|
|
_radioImage = rect.height / rect.width;
|
|
|
|
|
print("rect = $rect,_radioImage = $_radioImage");
|
|
|
|
|
// rect = Rect.fromLTRB(0.0, 0.0, 0.0, 0.0),_radioImage = NaN
|
|
|
|
|
// rect = Rect.fromLTRB(0.0, 0.0, 4096.0, 3360.0),_radioImage = 0.8203125
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
imageWztp = getWztp(); //得到违章图片
|
|
|
|
|
getPreBtn_NextBtn();
|
|
|
|
|
try_setState();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
double _radioImage = 9 / 16;
|
|
|
|
|
|
|
|
|
|
// 使用 cached_network_image 插件实现网络图片缓存
|
|
|
|
|
// 使用 flutter_drag_scale 实现可缩放可拖拽双击放大的图片功能。PhotoView插件不好用,有问题
|
|
|
|
|
Widget getNetworkImage(String url) {
|
|
|
|
|
return CachedNetworkImage(
|
|
|
|
|
imageUrl: url,
|
|
|
|
|
alignment: Alignment.topCenter,
|
|
|
|
|
imageBuilder: (context, imageProvider) => DragScaleContainer(
|
|
|
|
|
doubleTapStillScale: true, child: Image(image: imageProvider, fit: BoxFit.fill)
|
|
|
|
|
// child: Image(
|
|
|
|
|
// image: NetworkImage(
|
|
|
|
|
// 'http://h.hiphotos.baidu.com/zhidao/wh%3D450%2C600/sign=0d023672312ac65c67506e77cec29e27/9f2f070828381f30dea167bbad014c086e06f06c.jpg'),
|
|
|
|
|
// ),
|
|
|
|
|
),
|
|
|
|
|
// imageBuilder: (context, imageProvider) => PhotoView(
|
|
|
|
|
// imageProvider: imageProvider,
|
|
|
|
|
// ),
|
|
|
|
|
//placeholder: (context, url) => CircularProgressIndicator(),
|
|
|
|
|
placeholder: (context, url) =>
|
|
|
|
|
getMoreWidget(color: Colors.black38, size: 20.0, strokeWidth: 2.0),
|
|
|
|
|
errorWidget: (context, url, error) => Icon(Icons.error),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 167 50 3.34
|
|
|
|
|
Widget getLgmzs(int lgmzs, {double width = 127, double height = 127}) {
|
|
|
|
|
int _rgb = (255 * (5 - lgmzs)) ~/ 5;
|
|
|
|
|
return Stack(
|
|
|
|
|
children: [
|
|
|
|
|
Container(
|
|
|
|
|
width: ScreenUtil().setWidth(width),
|
|
|
|
|
height: ScreenUtil().setHeight(height),
|
|
|
|
|
padding: EdgeInsets.only(
|
|
|
|
|
right: ScreenUtil().setWidth(6), left: ScreenUtil().setWidth(6), top: 0, bottom: 4),
|
|
|
|
|
child: Column(
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
|
|
|
|
children: [
|
|
|
|
|
Text('$lgmzs级${lgmzs * 20}%', style: TextStyle(fontSize: 10)),
|
|
|
|
|
//SizedBox(height: 0),
|
|
|
|
|
Container(
|
|
|
|
|
width: ScreenUtil().setWidth(66),
|
|
|
|
|
height: ScreenUtil().setHeight(66),
|
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
|
border: Border.all(color: Colors.grey),
|
|
|
|
|
color: Color.fromRGBO(_rgb, _rgb, _rgb, 1.0),
|
|
|
|
|
borderRadius: new BorderRadius.circular(0),
|
|
|
|
|
),
|
|
|
|
|
)
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
Positioned(
|
|
|
|
|
top: ScreenUtil().setHeight(4),
|
|
|
|
|
child: Container(
|
|
|
|
|
width: ScreenUtil().setWidth(width),
|
|
|
|
|
height: ScreenUtil().setHeight(height - 8),
|
|
|
|
|
padding: EdgeInsets.only(
|
|
|
|
|
right: ScreenUtil().setWidth(6), left: ScreenUtil().setWidth(6), top: 0, bottom: 0),
|
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
|
border: Border.all(
|
|
|
|
|
color:
|
|
|
|
|
(lgmzs == mapZpjl['lgmzs']) ? Colors.red : Color.fromRGBO(244, 244, 244, 1),
|
|
|
|
|
width: 2),
|
|
|
|
|
//color: Colors.lightBlue,
|
|
|
|
|
borderRadius: new BorderRadius.circular(3.0),
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
)
|
|
|
|
|
],
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//得到tsjj页面组件
|
|
|
|
|
//1、得到格林曼黑度标准和视频播放按钮组件
|
|
|
|
|
Widget getHdAndPlay() {
|
|
|
|
|
return Row(
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
getLgmzs(0),
|
|
|
|
|
getLgmzs(1),
|
|
|
|
|
getLgmzs(2),
|
|
|
|
|
getLgmzs(3),
|
|
|
|
|
getLgmzs(4),
|
|
|
|
|
getLgmzs(5, width: 153),
|
|
|
|
|
getIconBtnSizeX(
|
|
|
|
|
height: 104,
|
|
|
|
|
//getIconBtnSizeX 中已经使用ScreenUtil().setHeight(126),此处不能传 ScreenUtil().setHeight(126) ,否则严重错位
|
|
|
|
|
width: 168,
|
|
|
|
|
text: "视频",
|
|
|
|
|
textSize: 12,
|
|
|
|
|
circular: 4,
|
|
|
|
|
color: Color.fromRGBO(52, 157, 237, 1),
|
|
|
|
|
onTop: () async {
|
|
|
|
|
if (Playing) {
|
|
|
|
|
//禁止同时启动两次播放器
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Playing = true; //禁止同时启动两次播放器
|
|
|
|
|
urlnew = getMediaUrl(mapZpjl['video_url']);
|
|
|
|
|
|
|
|
|
|
//获取视频地址失败
|
|
|
|
|
if (!isVideoUrl(urlnew)) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Navigator.of(_context).push(MaterialPageRoute(
|
|
|
|
|
builder: (context) => SuperPlayerPage(
|
|
|
|
|
loop: 0, //设置播放循环,默认播放器的循环次数是1, 即不循环播放。如果设置循环次数0,表示无限循环。
|
|
|
|
|
url: urlnew,
|
|
|
|
|
title:
|
|
|
|
|
'${widget.text}视频${num}\n${mapZpjl[mapName['plate_id']]}(${getDwmc(mapZpjl['dwip'])})')));
|
|
|
|
|
|
|
|
|
|
// Navigator.of(_context).push(MaterialPageRoute(
|
|
|
|
|
// builder: (context) => PlayerProNew(
|
|
|
|
|
// loop: 0, //设置播放循环,默认播放器的循环次数是1, 即不循环播放。如果设置循环次数0,表示无限循环。
|
|
|
|
|
// url: urlnew,
|
|
|
|
|
// title:
|
|
|
|
|
// '${widget.text}视频${num}\n${mapZpjl[mapName['plate_id']]}(${getDwmc(mapZpjl['dwip'])})')));
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
SizedBox(width: ScreenUtil().setWidth(15)),
|
|
|
|
|
],
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Widget imageWztp;
|
|
|
|
|
|
|
|
|
|
//2、得到违章图片组件
|
|
|
|
|
Widget getWztp() {
|
|
|
|
|
//ratioList[index] = 0.5714285714285714
|
|
|
|
|
return Stack(
|
|
|
|
|
children: [
|
|
|
|
|
Container(
|
|
|
|
|
width: ScreenUtil().setWidth(1022),
|
|
|
|
|
//height: ScreenUtil().setHeight(639),
|
|
|
|
|
//height: ScreenUtil().setHeight(22 + 1022 * _radioImage),
|
|
|
|
|
height: ScreenUtil().setHeight(30 + 1022 * g_radioImage),
|
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
|
//color: Colors.white,
|
|
|
|
|
borderRadius: BorderRadius.all(
|
|
|
|
|
Radius.circular(12),
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
Positioned(
|
|
|
|
|
//left: ScreenUtil().setWidth(_marginLeft),
|
|
|
|
|
top: ScreenUtil().setHeight(_marginLeft),
|
|
|
|
|
child: Container(
|
|
|
|
|
width: ScreenUtil().setWidth(1022),
|
|
|
|
|
// height: ScreenUtil().setHeight(30 + 1022 * _radioImage),
|
|
|
|
|
height: ScreenUtil().setHeight(30 + 1022 * g_radioImage),
|
|
|
|
|
child: getNetworkImage(getMediaUrl(mapZpjl['pic_url'])),
|
|
|
|
|
),
|
|
|
|
|
)
|
|
|
|
|
],
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// void printScreenInformation() {
|
|
|
|
|
// print('Device width dp:${1.sw}dp');
|
|
|
|
|
// print('Device height dp:${1.sh}dp');
|
|
|
|
|
// print('Device pixel density:${ScreenUtil().pixelRatio}');
|
|
|
|
|
// print('Bottom safe zone distance dp:${ScreenUtil().bottomBarHeight}dp');
|
|
|
|
|
// print('Status bar height dp:${ScreenUtil().statusBarHeight}dp');
|
|
|
|
|
// print('The ratio of actual width to UI design:${ScreenUtil().scaleWidth}');
|
|
|
|
|
// print(
|
|
|
|
|
// 'The ratio of actual height to UI design:${ScreenUtil().scaleHeight}');
|
|
|
|
|
// print('System font scaling:${ScreenUtil().textScaleFactor}');
|
|
|
|
|
// print('0.5 times the screen width:${0.5.sw}dp');
|
|
|
|
|
// print('0.5 times the screen height:${0.5.sh}dp');
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
void printScreenInformation() {
|
|
|
|
|
print('ScreenUtil().screenWidth = ${ScreenUtil().screenWidth}');
|
|
|
|
|
print('设备宽度:${1.sw}dp');
|
|
|
|
|
print('"1.w" = ${1.w}');
|
|
|
|
|
print('"1.sw" = ${1.sw}');
|
|
|
|
|
print('设备高度:${1.sh}dp');
|
|
|
|
|
print('设备的像素密度:${ScreenUtil().pixelRatio}');
|
|
|
|
|
print('底部安全区距离:${ScreenUtil().bottomBarHeight}dp');
|
|
|
|
|
print('状态栏高度:${ScreenUtil().statusBarHeight}dp');
|
|
|
|
|
print('实际宽度的dp与设计稿px的比例:${ScreenUtil().scaleWidth}');
|
|
|
|
|
print('实际高度的dp与设计稿px的比例:${ScreenUtil().scaleHeight}');
|
|
|
|
|
print('宽度和字体相对于设计稿放大的比例:${ScreenUtil().scaleWidth * ScreenUtil().pixelRatio}');
|
|
|
|
|
print('高度相对于设计稿放大的比例:${ScreenUtil().scaleHeight * ScreenUtil().pixelRatio}');
|
|
|
|
|
print('系统的字体缩放比例:${ScreenUtil().textScaleFactor}');
|
|
|
|
|
print('屏幕宽度的0.5:${0.5.sw}dp');
|
|
|
|
|
print('屏幕高度的0.5:${0.5.sh}dp');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//3、得到违章图片说明信息组件
|
|
|
|
|
Widget getWztpSmxx() {
|
|
|
|
|
return Container(
|
|
|
|
|
width: ScreenUtil().setWidth(1022),
|
|
|
|
|
height: ScreenUtil().setHeight(390),
|
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
|
color: Colors.white,
|
|
|
|
|
borderRadius: BorderRadius.all(
|
|
|
|
|
Radius.circular(12),
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
child: Column(
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
|
|
|
children: [
|
|
|
|
|
//违章信息组件1:车牌号码、车牌颜色
|
|
|
|
|
getWzxxPart1(),
|
|
|
|
|
//违章信息组件2:抓拍时间组件
|
|
|
|
|
getWzxxText('抓拍时间:' + mapZpjl['zpsj']),
|
|
|
|
|
//违章信息组件3:车牌类型 + 黑度
|
|
|
|
|
getWzxxPart3(),
|
|
|
|
|
//违章信息组件4:抓拍地点(简称)
|
|
|
|
|
getWzxxText('抓拍地点:' + getDwmc(mapZpjl['dwip']) + ' (简称)'),
|
|
|
|
|
//违章信息组件5:抓拍地点
|
|
|
|
|
getWzxxText('抓拍地点:' + mapZpjl['dwms']),
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// I/flutter (22989): ScreenUtil().screenWidth = 360.0
|
|
|
|
|
// I/flutter (22989): 设备宽度:360.0dp
|
|
|
|
|
// I/flutter (22989): "1.w" = 0.3333333333333333
|
|
|
|
|
// I/flutter (22989): "1.sw" = 360.0
|
|
|
|
|
// I/flutter (22989): 设备高度:640.0dp
|
|
|
|
|
// I/flutter (22989): 设备的像素密度:3.0
|
|
|
|
|
// I/flutter (22989): 底部安全区距离:0.0dp
|
|
|
|
|
// I/flutter (22989): 状态栏高度:24.0dp
|
|
|
|
|
// I/flutter (22989): 实际宽度的dp与设计稿px的比例:0.3333333333333333
|
|
|
|
|
// I/flutter (22989): 实际高度的dp与设计稿px的比例:0.3333333333333333
|
|
|
|
|
// I/flutter (22989): 宽度和字体相对于设计稿放大的比例:1.0
|
|
|
|
|
// I/flutter (22989): 高度相对于设计稿放大的比例:1.0
|
|
|
|
|
// I/flutter (22989): 系统的字体缩放比例:1.0
|
|
|
|
|
// I/flutter (22989): 屏幕宽度的0.5:180.0dp
|
|
|
|
|
// I/flutter (22989): 屏幕高度的0.5:320.0dp
|
|
|
|
|
|
|
|
|
|
//3、得到违章信息组件1:车牌号码、车牌颜色
|
|
|
|
|
//车牌颜色Map cpysMap = {
|
|
|
|
|
// '蓝色': cpysItem(
|
|
|
|
|
// cpysText: '蓝色',
|
|
|
|
|
// cpysBackground: Colors.blue,
|
|
|
|
|
// cpysFont: Colors.white,
|
|
|
|
|
// cpysBorder: Colors.orange),
|
|
|
|
|
// }
|
|
|
|
|
Widget getWzxxPart1() {
|
|
|
|
|
//printScreenInformation();
|
|
|
|
|
return Row(
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.start,
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
SizedBox(width: ScreenUtil().setWidth(_marginLeft)),
|
|
|
|
|
getTitleText('车牌号码:'),
|
|
|
|
|
getBoderText(mapZpjl[mapName['plate_id']].toString(),
|
|
|
|
|
width: ScreenUtil().setWidth(1022 / 3.2)),
|
|
|
|
|
Expanded(child: SizedBox.shrink()),
|
|
|
|
|
getTitleText('颜色:'),
|
|
|
|
|
getBoderText(mapZpjl[mapName['plate_color']], width: ScreenUtil().setWidth(1022 / 4.8)),
|
|
|
|
|
SizedBox(width: ScreenUtil().setWidth(_marginLeft)),
|
|
|
|
|
],
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Widget getTitleRichText(String text1, {String text2 = '', double fontSize = 16}) {
|
|
|
|
|
return RichText(
|
|
|
|
|
overflow: TextOverflow.ellipsis,
|
|
|
|
|
textAlign: TextAlign.left,
|
|
|
|
|
text: TextSpan(
|
|
|
|
|
text: text1,
|
|
|
|
|
style: TextStyle(fontSize: fontSize, color: Colors.black),
|
|
|
|
|
children: [
|
|
|
|
|
TextSpan(
|
|
|
|
|
text: text2,
|
|
|
|
|
style: TextStyle(fontSize: fontSize, color: Colors.blue, fontWeight: FontWeight.w500),
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Widget getTitleText(String text, {double fontSize = 16}) {
|
|
|
|
|
return Text(text,
|
|
|
|
|
style: TextStyle(fontSize: fontSize),
|
|
|
|
|
textAlign: TextAlign.left,
|
|
|
|
|
overflow: TextOverflow.ellipsis);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Widget getTrailText(String text, {double fontSize = 16, double off = 0}) {
|
|
|
|
|
return Container(
|
|
|
|
|
width: _screenWidth - _widthLeft - off - (2 * ScreenUtil().setWidth(_marginLeft)),
|
|
|
|
|
child: Text(text,
|
|
|
|
|
style: TextStyle(fontSize: fontSize),
|
|
|
|
|
textAlign: TextAlign.left,
|
|
|
|
|
overflow: TextOverflow.ellipsis),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Widget getBoderText(String text, {double width = 40}) {
|
|
|
|
|
cpysItem _cpysItem = cpysMap[mapZpjl[mapName['plate_color']]];
|
|
|
|
|
|
|
|
|
|
return Container(
|
|
|
|
|
//color: _cpysItem.cpysBackground,
|
|
|
|
|
alignment: Alignment(0, -1),
|
|
|
|
|
width: width,
|
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
|
border: Border.all(color: _cpysItem.cpysBorder, width: 2),
|
|
|
|
|
color: _cpysItem.cpysBackground,
|
|
|
|
|
borderRadius: BorderRadius.circular(3),
|
|
|
|
|
),
|
|
|
|
|
child: Padding(
|
|
|
|
|
padding: EdgeInsets.only(bottom: 3),
|
|
|
|
|
child: Text(text,
|
|
|
|
|
style: TextStyle(fontSize: _fontSize, color: _cpysItem.cpysFont),
|
|
|
|
|
textAlign: TextAlign.left,
|
|
|
|
|
overflow: TextOverflow.ellipsis),
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//I/flutter (17555): mapZpjl = {
|
|
|
|
|
// id: 1222, plate_id: 川Q736X2, plate_color: 蓝色, zpsj: 1612857077, yjxx_id: 1399, workflow: 999,
|
|
|
|
|
// video_url: video/9_6063_20210209_155117_川Q736X2.mp4,
|
|
|
|
|
// pic_url: /wwwroot/admin/Api/wwwroot/public/uploads/9d2f45fd24b41f2b94abe42b30970d75.jpg,
|
|
|
|
|
// clfl: 集装箱卡车, dwip: 172.16.3.9, dwms: 宜长路出城方向, lgmzs: 3, jczxd: 994, sfhy: 黑烟车
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
Widget getIcon(IconData _iconData) {
|
|
|
|
|
return Container(
|
|
|
|
|
width: _iconSize - 2,
|
|
|
|
|
height: _iconSize,
|
|
|
|
|
child: Padding(
|
|
|
|
|
padding: EdgeInsets.only(top: 2),
|
|
|
|
|
child: Icon(_iconData, size: _iconSize, color: _iconColor),
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Widget getWzxxText(String _text, {double fontSize = 16}) {
|
|
|
|
|
return Row(
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.start,
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
SizedBox(width: ScreenUtil().setWidth(_marginLeft)),
|
|
|
|
|
Container(
|
|
|
|
|
alignment: Alignment(-1, 0),
|
|
|
|
|
width: ScreenUtil().setWidth(1022) - ScreenUtil().setWidth(_marginLeft),
|
|
|
|
|
child: Text(_text,
|
|
|
|
|
style: TextStyle(fontSize: fontSize),
|
|
|
|
|
textAlign: TextAlign.left,
|
|
|
|
|
overflow: TextOverflow.ellipsis),
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Widget getWzxxPart3() {
|
|
|
|
|
return Row(
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.start,
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
SizedBox(width: ScreenUtil().setWidth(_marginLeft)),
|
|
|
|
|
Container(
|
|
|
|
|
alignment: Alignment(-1, 0),
|
|
|
|
|
//width: ScreenUtil().setWidth(1022) - ScreenUtil().setWidth(_marginLeft),
|
|
|
|
|
child: getTitleText('车牌类型:' + mapZpjl['cplx']),
|
|
|
|
|
),
|
|
|
|
|
Expanded(child: SizedBox.shrink()),
|
|
|
|
|
//getTitleText('黑度: ${mapZpjl['lgmzs']}'),
|
|
|
|
|
getTitleRichText('黑度:', text2: '${mapZpjl['lgmzs']} '),
|
|
|
|
|
SizedBox(width: ScreenUtil().setWidth(_marginLeft)),
|
|
|
|
|
],
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Widget getText(String text, {Color color}) {
|
|
|
|
|
return Row(
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.start,
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
Container(
|
|
|
|
|
alignment: Alignment(-1, 0),
|
|
|
|
|
width: ScreenUtil().setWidth(1022 - 2 * _marginLeft),
|
|
|
|
|
child: Row(
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.start,
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
SizedBox(width: ScreenUtil().setWidth(_marginLeft)),
|
|
|
|
|
// Flutter 解决Text内容展示越界
|
|
|
|
|
Expanded(
|
|
|
|
|
child: Text(text,
|
|
|
|
|
textAlign: TextAlign.left,
|
|
|
|
|
overflow: TextOverflow.ellipsis,
|
|
|
|
|
style: TextStyle(color: color)))
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Widget getText2(String text1, String text2, String text3, {Color color}) {
|
|
|
|
|
return Row(
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.start,
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
Container(
|
|
|
|
|
alignment: Alignment(-1, 0),
|
|
|
|
|
width: ScreenUtil().setWidth(1022 - 2 * _marginLeft),
|
|
|
|
|
child: Row(
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.start,
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
SizedBox(width: ScreenUtil().setWidth(_marginLeft)),
|
|
|
|
|
Text(text1, textAlign: TextAlign.left),
|
|
|
|
|
Text(text2,
|
|
|
|
|
textAlign: TextAlign.left,
|
|
|
|
|
overflow: TextOverflow.ellipsis,
|
|
|
|
|
style: TextStyle(color: color, fontWeight: FontWeight.w500)),
|
|
|
|
|
Text(text3, textAlign: TextAlign.left),
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//5、得到黑烟初审'hycsInfo'、或者黑烟'hyfhInfo'複核信息组件
|
|
|
|
|
//style: TextStyle(fontSize: _fontSize),
|
|
|
|
|
Widget getHyshInfo(String _hyshInfo) {
|
|
|
|
|
String _hyshLx = (_hyshInfo == 'hycsInfo' ? '初审' : '复审'); //黑烟审核类型
|
|
|
|
|
String _hyshYh = (_hyshInfo == 'hycsInfo' ? 'cs_username' : 'fs_username'); //黑烟审核用户
|
|
|
|
|
String _hyshSj = (_hyshInfo == 'hycsInfo' ? 'cs_time' : 'fs_time'); //黑烟审核时间
|
|
|
|
|
String _hyshJg = (_hyshInfo == 'hycsInfo' ? 'cs_tile' : 'fs_tile'); //黑烟审核结果
|
|
|
|
|
String _hyshYj = (_hyshInfo == 'hycsInfo' ? 'cs_shuoming' : 'fs_shuoming'); //黑烟审核意见
|
|
|
|
|
|
|
|
|
|
double _height = _hyshInfo == 'hyfhInfo' && widget.hyshlx == 'tsjj' ? 315 : 265;
|
|
|
|
|
return Column(
|
|
|
|
|
children: [
|
|
|
|
|
Container(
|
|
|
|
|
width: ScreenUtil().setWidth(1022),
|
|
|
|
|
height: ScreenUtil().setHeight(_height),
|
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
|
color: Colors.white,
|
|
|
|
|
borderRadius: BorderRadius.all(
|
|
|
|
|
Radius.circular(12),
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
child: Column(
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
|
|
|
children: [
|
|
|
|
|
Row(
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.start,
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
Container(
|
|
|
|
|
alignment: Alignment(-1, 0),
|
|
|
|
|
width: ScreenUtil().setWidth(1022 - 2 * _marginLeft),
|
|
|
|
|
child: Row(
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.start,
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
SizedBox(width: ScreenUtil().setWidth(_marginLeft)),
|
|
|
|
|
Text('${_hyshLx}结果:' + mapZpjl[_hyshJg],
|
|
|
|
|
textAlign: TextAlign.left, overflow: TextOverflow.ellipsis),
|
|
|
|
|
SizedBox(width: ScreenUtil().setWidth(20)),
|
|
|
|
|
Container(
|
|
|
|
|
width: my_iconSize,
|
|
|
|
|
height: my_iconSize,
|
|
|
|
|
decoration: mapZpjl[_hyshJg] == ''
|
|
|
|
|
? null
|
|
|
|
|
: BoxDecoration(
|
|
|
|
|
//color: Colors.white,
|
|
|
|
|
image: DecorationImage(
|
|
|
|
|
image: AssetImage(mapZpjl[_hyshJg] == "黑烟车"
|
|
|
|
|
? "assets/images/hyc.png"
|
|
|
|
|
: "assets/images/fhyc.png"),
|
|
|
|
|
fit: BoxFit.contain),
|
|
|
|
|
),
|
|
|
|
|
alignment: Alignment.center,
|
|
|
|
|
//child:
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
getText('${_hyshLx}意见:' + mapZpjl[_hyshYj]),
|
|
|
|
|
getText('${_hyshLx}用户:' + mapZpjl[_hyshYh]),
|
|
|
|
|
getText('${_hyshLx}时间:' + mapZpjl[_hyshSj]),
|
|
|
|
|
_hyshInfo == 'hyfhInfo' && widget.hyshlx == 'tsjj'
|
|
|
|
|
? (getText2('推送状态:', widget.tsztText, ' (${getDate(mapZpjl['ts_time'])})',
|
|
|
|
|
color:
|
|
|
|
|
widget.tsztText.indexOf('成功') >= 0 ? Colors.blueAccent : Colors.black26))
|
|
|
|
|
: SizedBox.shrink(),
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
SizedBox(height: ScreenUtil().setHeight(_marginVer)),
|
|
|
|
|
],
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//9、得到推送交警状态信息组件7:推送状态
|
|
|
|
|
// tszt 整型 推送状态:0-未推送 | 1-推送失败 | 3-推送成功
|
|
|
|
|
//_mapTsjjGetTsStatus['tszt']
|
|
|
|
|
Widget getWzxxPart7() {
|
|
|
|
|
return Row(
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.start,
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
SizedBox(width: ScreenUtil().setWidth(_marginLeft)),
|
|
|
|
|
Container(
|
|
|
|
|
alignment: Alignment(-1, 0),
|
|
|
|
|
width: _screenWidth - ScreenUtil().setWidth(_marginLeft),
|
|
|
|
|
child: getTitleText('推送状态:' + mapTsztText[_mapTsjjGetTsStatus['tszt']]),
|
|
|
|
|
),
|
|
|
|
|
],
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//10、得到推送交警确认组件
|
|
|
|
|
Widget getTsjjQr() {
|
|
|
|
|
return Row(
|
|
|
|
|
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
getBtnSizeX(
|
|
|
|
|
text: "返回",
|
|
|
|
|
onPressedFun: () async {
|
|
|
|
|
Navigator.pop(context);
|
|
|
|
|
},
|
|
|
|
|
width: 90.0),
|
|
|
|
|
preBtn,
|
|
|
|
|
nextBtn,
|
|
|
|
|
],
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//解决第一次进入报错问题。因为getPreBtn_NextBtn()还未执行,preBtn和nextBtn为空
|
|
|
|
|
Widget preBtn = Container(
|
|
|
|
|
color: Colors.white12, //onPressedFun为null时无效
|
|
|
|
|
width: 70.0,
|
|
|
|
|
height: 35.0,
|
|
|
|
|
child: RaisedButton(
|
|
|
|
|
padding: EdgeInsets.all(0),
|
|
|
|
|
textColor: Colors.black,
|
|
|
|
|
child: Text('上一条'),
|
|
|
|
|
onPressed: null,
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
Widget nextBtn = Container(
|
|
|
|
|
color: Colors.white12, //onPressedFun为null时无效
|
|
|
|
|
width: 70.0,
|
|
|
|
|
height: 35.0,
|
|
|
|
|
child: RaisedButton(
|
|
|
|
|
padding: EdgeInsets.all(0),
|
|
|
|
|
textColor: Colors.black,
|
|
|
|
|
child: Text('下一条'),
|
|
|
|
|
onPressed: null,
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
getPreBtn_NextBtn() {
|
|
|
|
|
preBtn = getBtnSizeX(
|
|
|
|
|
text: "上一条",
|
|
|
|
|
onPressedFun: null,
|
|
|
|
|
);
|
|
|
|
|
nextBtn = getBtnSizeX(
|
|
|
|
|
text: "下一条",
|
|
|
|
|
onPressedFun: null,
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
if (widget.index > 0 && listLen > 0) {
|
|
|
|
|
preBtn = getBtnSizeX(
|
|
|
|
|
text: "上一条",
|
|
|
|
|
onPressedFun: () async {
|
|
|
|
|
if (widget.index > 0) {
|
|
|
|
|
widget.index--;
|
|
|
|
|
getZpjlData();
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (widget.index < (listLen - 1) && listLen > 0) {
|
|
|
|
|
nextBtn = getBtnSizeX(
|
|
|
|
|
text: "下一条",
|
|
|
|
|
onPressedFun: () async {
|
|
|
|
|
if (widget.index < listLen - 1) {
|
|
|
|
|
widget.index++;
|
|
|
|
|
getZpjlData();
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool showMoreWidget = false;
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
|
return Scaffold(
|
|
|
|
|
//resizeToAvoidBottomPadding: false,
|
|
|
|
|
appBar: PreferredSize(
|
|
|
|
|
preferredSize: Size.fromHeight(ScreenUtil().setHeight(173)), // 设置appBar高度
|
|
|
|
|
// 设置appBar高度
|
|
|
|
|
child: AppBar(
|
|
|
|
|
automaticallyImplyLeading: false,
|
|
|
|
|
centerTitle: true,
|
|
|
|
|
titleSpacing: 0.0,
|
|
|
|
|
//设置title的左边距
|
|
|
|
|
flexibleSpace: Container(
|
|
|
|
|
//SizedBox(height: ScreenUtil().statusBarHeight), //显示顶部状态栏
|
|
|
|
|
// SizedBox(height: ScreenUtil().setHeight(10)), //显示顶部状态栏
|
|
|
|
|
padding: EdgeInsets.only(top: ScreenUtil().statusBarHeight), //留出顶部状态栏高度
|
|
|
|
|
child: Container(
|
|
|
|
|
//height: ScreenUtil().setHeight(173),
|
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
|
gradient: LinearGradient(
|
|
|
|
|
begin: Alignment.centerLeft,
|
|
|
|
|
end: Alignment.centerRight,
|
|
|
|
|
colors: [
|
|
|
|
|
Color.fromRGBO(12, 186, 156, 1),
|
|
|
|
|
Color.fromRGBO(39, 127, 235, 1),
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
// decoration: BoxDecoration(
|
|
|
|
|
// gradient: LinearGradient(colors: [
|
|
|
|
|
// Color(0xFF0018EB),
|
|
|
|
|
// Color(0xFF01C1D9),
|
|
|
|
|
// ], begin: Alignment.bottomCenter, end: Alignment.topCenter),
|
|
|
|
|
// ),
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
title: Padding(
|
|
|
|
|
padding: EdgeInsets.only(left: 0, right: 0),
|
|
|
|
|
child: Row(
|
|
|
|
|
//mainAxisAlignment: MainAxisAlignment.start,
|
|
|
|
|
children: [
|
|
|
|
|
getIconAndTextButton(
|
|
|
|
|
iconColor: Colors.white,
|
|
|
|
|
iconData: Icons.chevron_left_outlined,
|
|
|
|
|
onPress: showMoreWidget
|
|
|
|
|
? null
|
|
|
|
|
: () {
|
|
|
|
|
Navigator.pop(context);
|
|
|
|
|
},
|
|
|
|
|
),
|
|
|
|
|
Expanded(
|
|
|
|
|
child: Text(widget.text + '记录' + num,
|
|
|
|
|
style: TextStyle(color: Colors.white, fontSize: 20),
|
|
|
|
|
textAlign: TextAlign.center,
|
|
|
|
|
overflow: TextOverflow.ellipsis),
|
|
|
|
|
),
|
|
|
|
|
SizedBox(width: 30),
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
body: null == imageWztp
|
|
|
|
|
// 显示加载中的圈圈
|
|
|
|
|
? getMoreWidget(color: Colors.black38, size: 20.0, strokeWidth: 2.0)
|
|
|
|
|
: Stack(
|
|
|
|
|
children: [
|
|
|
|
|
//SizedBox.shrink() 创建父类允许最小尺寸的约束Box
|
|
|
|
|
showMoreWidget
|
|
|
|
|
? Align(
|
|
|
|
|
alignment: Alignment(0, 0.8),
|
|
|
|
|
child: Container(
|
|
|
|
|
height: 200,
|
|
|
|
|
width: 200,
|
|
|
|
|
child: getMoreWidget2(
|
|
|
|
|
text: '加载中...',
|
|
|
|
|
color: Colors.red,
|
|
|
|
|
size: 40.0,
|
|
|
|
|
strokeWidth: 3.0), //显示加载中的圈圈,
|
|
|
|
|
),
|
|
|
|
|
)
|
|
|
|
|
: SizedBox.shrink(),
|
|
|
|
|
KeyboardAvoider(
|
|
|
|
|
autoScroll: true,
|
|
|
|
|
child: Container(
|
|
|
|
|
color: Color.fromRGBO(244, 244, 244, 1),
|
|
|
|
|
child: Column(
|
|
|
|
|
children: <Widget>[
|
|
|
|
|
//1、得到格林曼黑度标准和视频播放按钮组件
|
|
|
|
|
getHdAndPlay(),
|
|
|
|
|
//2、得到违章图片组件
|
|
|
|
|
imageWztp,
|
|
|
|
|
SizedBox(height: ScreenUtil().setHeight(_marginVer)),
|
|
|
|
|
//3、得到违章图片说明信息组件
|
|
|
|
|
getWztpSmxx(),
|
|
|
|
|
SizedBox(height: ScreenUtil().setHeight(_marginVer)),
|
|
|
|
|
//7、得到黑烟初审信息组件
|
|
|
|
|
widget.hyshlx == 'hycs' ||
|
|
|
|
|
widget.hyshlx == 'hyfh' ||
|
|
|
|
|
widget.hyshlx == 'tsjj'
|
|
|
|
|
? getHyshInfo('hycsInfo')
|
|
|
|
|
: SizedBox.shrink(),
|
|
|
|
|
//8、得到黑烟复审信息组件
|
|
|
|
|
widget.hyshlx == 'hyfh' || widget.hyshlx == 'tsjj'
|
|
|
|
|
? getHyshInfo('hyfhInfo')
|
|
|
|
|
: SizedBox.shrink(),
|
|
|
|
|
SizedBox(height: widget.hyshlx == 'tsjj' ? 0 : 15),
|
|
|
|
|
//9、得到推送交警确认组件
|
|
|
|
|
getTsjjQr(),
|
|
|
|
|
//SizedBox(height: 10),
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
widget.hyshlx == 'tsjj'
|
|
|
|
|
? Positioned(
|
|
|
|
|
//alignment: Alignment(0.9, 0.35),
|
|
|
|
|
//alignment: Alignment(0.8, 0.45),
|
|
|
|
|
right: ScreenUtil().setWidth(50),
|
|
|
|
|
top: ScreenUtil().setHeight(1423),
|
|
|
|
|
child: Container(
|
|
|
|
|
//alignment: Alignment(0.5, -0.5),
|
|
|
|
|
width: _stampSize,
|
|
|
|
|
height: _stampSize,
|
|
|
|
|
//color: Colors.black12,
|
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
|
//color: Colors.white,
|
|
|
|
|
image: DecorationImage(
|
|
|
|
|
//image: AssetImage("assets/images/jkzx_stamp.png"), fit: BoxFit.contain),
|
|
|
|
|
image: AssetImage(mapZpjl['fs_tile'] == '黑烟车'
|
|
|
|
|
? "assets/images/hyc.png"
|
|
|
|
|
: "assets/images/fhyc.png"),
|
|
|
|
|
fit: BoxFit.contain),
|
|
|
|
|
),
|
|
|
|
|
//child:
|
|
|
|
|
),
|
|
|
|
|
)
|
|
|
|
|
: SizedBox.shrink(),
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Widget getBtnSizeX({@required text, width = 70.0, height = 35.0, onPressedFun}) {
|
|
|
|
|
return Container(
|
|
|
|
|
color: Colors.white12, //onPressedFun为null时无效
|
|
|
|
|
width: width,
|
|
|
|
|
height: height,
|
|
|
|
|
child: RaisedButton(
|
|
|
|
|
padding: EdgeInsets.all(0),
|
|
|
|
|
textColor: Colors.black,
|
|
|
|
|
child: Text(text),
|
|
|
|
|
onPressed: onPressedFun,
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|