From 2fb22de8a53415c8923c139331cfc1b2dbf4f681 Mon Sep 17 00:00:00 2001 From: WinUser01 Date: Tue, 10 May 2022 20:24:10 +0800 Subject: [PATCH] =?UTF-8?q?hyzp=5Fybqx-Commit157=EF=BC=9A=E5=B7=B2?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=A5=BDfhycx=5Fcontent=5Fnew.dart=E3=80=82?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E8=87=AA=E5=AE=9A=E4=B9=89=20my=5Fflutter=5F?= =?UTF-8?q?drag=5Fscale=20=E6=8F=92=E4=BB=B6=EF=BC=8C=E5=AE=8C=E7=BE=8E?= =?UTF-8?q?=E8=A7=A3=E5=86=B3Listview=E6=BB=9A=E5=8A=A8=E4=B8=8E=E5=9B=BE?= =?UTF-8?q?=E7=89=87=E7=BC=A9=E6=94=BE=E6=8B=96=E5=8A=A8=E4=B9=8B=E9=97=B4?= =?UTF-8?q?=E7=9A=84=E6=89=8B=E5=8A=BF=E5=86=B2=E7=AA=81=EF=BC=8C=E4=B8=8D?= =?UTF-8?q?=E4=BC=9A=E6=B6=88=E8=80=97=E7=82=B9=E5=87=BB=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=EF=BC=8C=E6=BB=9A=E5=8A=A8=E5=BE=88=E7=81=B5=E6=95=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/pages/Works/HYSH/fhycx_content_new.dart | 123 ++++++++++++-------- lib/pages/Works/HYSH/hysh_content_new.dart | 5 +- 2 files changed, 75 insertions(+), 53 deletions(-) diff --git a/lib/pages/Works/HYSH/fhycx_content_new.dart b/lib/pages/Works/HYSH/fhycx_content_new.dart index fe4fd52..be72fd7 100644 --- a/lib/pages/Works/HYSH/fhycx_content_new.dart +++ b/lib/pages/Works/HYSH/fhycx_content_new.dart @@ -133,26 +133,45 @@ class _FhycxPageState extends State { } catch (e) {} } - // 使用 cached_network_image 插件实现网络图片缓存 - // 使用 flutter_drag_scale 实现可缩放可拖拽双击放大的图片功能。PhotoView插件不好用,有问题 + // 使用自定义 my_flutter_drag_scale 插件,完美解决Listview滚动与图片缩放拖动之间的手势冲突,不会消耗点击事件,滚动很灵敏 + ScrollPhysics scrollPhysics; + bool bZoomedInit = true; // 图片是否为原样大小 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), + imageBuilder: (context, imageProvider) { + return DragScaleContainer( + doubleTapStillScale: false, + child: Image(image: imageProvider, fit: BoxFit.fill), + scaleChangedCallback: (ScaleChangedModel model) { + print("model.scale = ${model.scale}"); + bZoomedInit = (1.0 == model.scale); + scrollPhysics = PageScrollPhysics(); + setState(() {}); + }, + pointerDownCallback: () { + if (bZoomedInit) { + if (scrollPhysics != PageScrollPhysics()) { + scrollPhysics = PageScrollPhysics(); + setState(() {}); + } + } else { + if (scrollPhysics != NeverScrollableScrollPhysics()) { + scrollPhysics = NeverScrollableScrollPhysics(); + setState(() {}); + } + } + }, + pointerUpCallback: () { + scrollPhysics = PageScrollPhysics(); + setState(() {}); + }, + ); + }, ); } @@ -754,44 +773,48 @@ class _FhycxPageState extends State { ), ) : SizedBox.shrink(), - KeyboardAvoider( - autoScroll: true, - child: Container( - color: Color.fromRGBO(244, 244, 244, 1), - child: Column( - children: [ - //1、得到格林曼黑度标准和视频播放按钮组件 - getHdAndPlay(), - //2、得到违章图片组件 - imageWztp, - SizedBox(height: ScreenUtil().setHeight(_marginVer)), - //3、得到违章图片说明信息组件 - getWztpSmxx(), - SizedBox(height: ScreenUtil().setHeight(_marginVer)), - //7、得到黑烟初审信息组件 - getHyshInfo('hycsInfo'), - SizedBox(height: ScreenUtil().setHeight(_marginVer)), - //8、得到黑烟复审信息组件 - getHyshInfo('hyfhInfo'), - SizedBox(height: ScreenUtil().setHeight(_marginVer)), - // //7、得到审核信息组件5:初审人员,初审时间 - // getWzxxPart5(), - // //8、得到审核信息组件6:复审人员,复审时间 - // getWzxxPart6(), - // SizedBox(height: 6), - // Divider(height: 1.0, color: Colors.blue), - // SizedBox(height: 6), - //6、得到推送交警状态信息组件7:推送状态 - //getWzxxPart7(), - // SizedBox(height: 8), - // Divider(height: 1.0, color: Colors.blue), - SizedBox(height: 18), - //9、得到推送交警确认组件 - getTsjjQr(), - SizedBox(height: 10), - ], + ListView( + // physics: NeverScrollableScrollPhysics(), // 允许ListView滚动 + // physics: null, // 允许ListView滚动 + physics: scrollPhysics, + children: [ + Container( + color: Color.fromRGBO(244, 244, 244, 1), + child: Column( + children: [ + //1、得到格林曼黑度标准和视频播放按钮组件 + getHdAndPlay(), + //2、得到违章图片组件 + imageWztp, + SizedBox(height: ScreenUtil().setHeight(_marginVer)), + //3、得到违章图片说明信息组件 + getWztpSmxx(), + SizedBox(height: ScreenUtil().setHeight(_marginVer)), + //7、得到黑烟初审信息组件 + getHyshInfo('hycsInfo'), + SizedBox(height: ScreenUtil().setHeight(_marginVer)), + //8、得到黑烟复审信息组件 + getHyshInfo('hyfhInfo'), + SizedBox(height: ScreenUtil().setHeight(_marginVer)), + // //7、得到审核信息组件5:初审人员,初审时间 + // getWzxxPart5(), + // //8、得到审核信息组件6:复审人员,复审时间 + // getWzxxPart6(), + // SizedBox(height: 6), + // Divider(height: 1.0, color: Colors.blue), + // SizedBox(height: 6), + //6、得到推送交警状态信息组件7:推送状态 + //getWzxxPart7(), + // SizedBox(height: 8), + // Divider(height: 1.0, color: Colors.blue), + SizedBox(height: 18), + //9、得到推送交警确认组件 + getTsjjQr(), + SizedBox(height: 10), + ], + ), ), - ), + ], ), Positioned( //alignment: Alignment(0.9, 0.35), diff --git a/lib/pages/Works/HYSH/hysh_content_new.dart b/lib/pages/Works/HYSH/hysh_content_new.dart index 74a29a9..be89348 100644 --- a/lib/pages/Works/HYSH/hysh_content_new.dart +++ b/lib/pages/Works/HYSH/hysh_content_new.dart @@ -595,6 +595,8 @@ class _HyshPageState extends State with SingleTickerProviderStat // } // 使用自定义 my_flutter_drag_scale 插件,完美解决Listview滚动与图片缩放拖动之间的手势冲突,不会消耗点击事件,滚动很灵敏 + ScrollPhysics scrollPhysics; + bool bZoomedInit = true; // 图片是否为原样大小 Widget getNetworkImage(String url) { return CachedNetworkImage( imageUrl: url, @@ -691,9 +693,6 @@ class _HyshPageState extends State with SingleTickerProviderStat double _marginVertical5 = 10; double _marginVertical6 = 20; - ScrollPhysics scrollPhysics; - bool bZoomedInit = true; // 图片是否为原样大小 - Future getTopTabsMap() async { //map遍历,清空数据 topTabs_map.forEach((key, value) {