From fc40593ab355aff5552bdeec0e666f5f46e087da Mon Sep 17 00:00:00 2001 From: xufei <727302827@qq.com> Date: Thu, 31 Jul 2025 21:15:00 +0800 Subject: [PATCH] 2025.7.31 --- .gitignore | 1 + assets/images/gantan-blue.png | Bin 0 -> 6409 bytes lib/customWidget/photo_picker_row.dart | 3 + lib/http/ApiService.dart | 159 +++++++++- lib/http/HttpManager.dart | 8 +- .../check_record_detail_page.dart | 209 ++++++------- .../Danger_paicha/check_record_list_page.dart | 3 + .../danger_image_updata_page.dart | 208 +++++++++++++ lib/pages/app/ai_alarm_page.dart | 2 +- lib/pages/app/application_page.dart | 3 +- lib/pages/app/danger_wait_list_page.dart | 3 + lib/pages/app/detail_images_page.dart | 79 +++++ lib/pages/app/hidden_record_detail_page.dart | 4 +- lib/pages/home/home_page.dart | 2 +- lib/pages/home/work/danger_page.dart | 212 +++++++++++-- lib/pages/home/work/danger_project_page.dart | 244 ++++++++++----- lib/pages/home/work/risk_list_page.dart | 169 +++++++++-- pubspec.lock | 278 +++++++++--------- 18 files changed, 1196 insertions(+), 391 deletions(-) create mode 100644 assets/images/gantan-blue.png create mode 100644 lib/pages/app/Danger_paicha/danger_image_updata_page.dart create mode 100644 lib/pages/app/detail_images_page.dart diff --git a/.gitignore b/.gitignore index 5b79b90..11b80bc 100644 --- a/.gitignore +++ b/.gitignore @@ -44,3 +44,4 @@ app.*.map.json /android/app/profile /android/app/release /android/key.properties +/android/app/build.gradle.kts diff --git a/assets/images/gantan-blue.png b/assets/images/gantan-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..fc120cdaa568aba5db0e980db88955e3796cac6d GIT binary patch literal 6409 zcmXw8Wmptl8{PnxPLYNsrIBt}UP4jU`w{g^q|b)Hjm&dhViMCm?#LPAJS2mk;`G}Kk}vE|^u3m*@AuQaL3#umWW`cM7? zRE;w30syo<8Y)T#{uT#WL@A7RsRQ?oZ@5CC$v#*3Z;@R-zW8s)0H-OgCeOyjO}h+D z-z||#C0AwlzUzaj7ze_-m8@8I4~f4hsp!raukk+V9^v@F{fmfr_ji;Y8^3MK8xi1t z>ANif<?82$Zq;*x|zV2IFYPQR`L6ePghJv2V}?#RfZRB)HWV*~{PsWBl0;21PP5 zt#vUolEXHR$ssu8(s;cl1{^*Ft@>%h`<#N#i!El1x9*#gy?-5`e=*R>;1jydUeiJSTq4=T%2t&%_>neuv(Th#t z@wySeey#AFPMMKzts4mJedko2mBfFZ^&hQ*4FqQpPytSHeq3?tgU5@L&VEe(HzH#1 z>S|2(H{B*oWYw1xANm2J;#`Vgqx=I%FA96igu3O9!1t882X?hrG*mJ(GhdBV%D*=N zYcD@2#Yt$d7dAHwkyDnXi=k5Tp-(4^@z~x~K!y->3sru;tNSxU@!1<_OJnhjKP_JS zG1|IY8}yW{iYe6o&D$s=$CB!bEv|c+ag?wo7cxeIZ*DJgb?CrMSfz zY0t1yi!9LGeBC7m>B>OQ7(Dy^3PaK5eVh7i6HLP*{7VBxi{~T_OB%Tu?^5jj zYRRg;6$=o6OnLL=AY^cWxkavYu*r9)ouW>!0ScT312&&NXT9hh$(`_ask$rvnU>4l zwhPptzO@HmFv13S-mv$;cLANC{!2vZupciW@yWQ-sBzh|UbO9m>{{2+mlKeSyPx4_Oe8LpeZ(xv z1J~dCGm5&>!w(s?HRGMJ+~iM%fK3(-n-X_W$8^mi1`4B2riLsVV)kj)zQ|4@3yAi{ z940&HAndC7dDsa}ulHU1Ohd`y`JqGB2*FUzP+2yDu-C|%;o&_NLc!cOMe3ln#Zr)G z)*ERN_F&RunUO(eCc~vfFoz*`2vEf`uIyFb2n_^JKsjeeYXdJ#jWEHsbW#U3LSLa# zG%yvqEub8~$d}3nR(CeF!*lI;l-*7}oh=3P=}aB@ysE(;|5gQ*FuFV});db&Z;%`w zRR>m)G;2nMs1$~e12qH@zil-+X4Lw~Cn!3=#4jyG&t1BWLE(hz+eyVm^HJe-ly05e z>8$j5>j0`4v!`T#B|;pL93LxW(3@V=}!qGQXz01F6?K3UWeOj3$yK6-XZ+|Max(qE9E{H9e3f=da1wlmKO7` zREg<9;#f~p@9>@^PVUr|sCtV*b3_IWj-EEL_o6f1jjFrPQ{GI`1}6CZhARkT$e?)F zdnf(=x&z%%jpWcuO^!0nt^<7m*4>Z<6*5R!$UZWxs7RE5%J}4uOIqSz*Zkl^w~kKa z12i>`6od7*^Y@XXRa+v8=e^;rIgB5Fvs^g9xPrG73ITwQ$xE5_hPHU_sD{rq!e$)t=6UTs&_TLJq#WE*A*MRfxHA&8WUY zEcF_cdOu1ZyO42TTuY1ysT!R&{!_R>1Ka2heA0^FR^e>>I#^6->2{l{Ndd#BXg$Eg z1yro2zu66Tx@1fkE!?_wC5gZ0lzQsrW;KI^&}_AqOBCkbXo(>0;AyiVdc9TLcI8ejP@@(qw!{27&$ z$LtzKKSD~iqV$*i4qy7VP*1v^ZP0Ukj-x!=F2CM4w6MFvNidkeP$KV7H4Tz`5%VJF zJ(vnk!^hi5&+;5;Yno4AH3ASjf9|5=gJ*~iV!@NQjsax~Cp>cz*XRT2Cq>S)*I z3@o?&V&%Z52$|K*n*trcNO|(*{w-BnE=z0U%>Ka<2{4J*Fc`E&b|esmVfwn4F7fyo z+~UX5_#<;M7KdN$B)CqAL#_)fr5DjLN7GR}MrunzQ?Q`tzNDq%Vu- zNCfzO#P1c>uEr;=OFJLV8H+6VaxxYo)n>8zd6O@Fr#zO!1Kk{0hj*|Q%r08Q38ab+ z(fBqojzC>9BA2H#vzse2cT8s-H7i?PqDSx#bNV!?(eHtQU2fJHPgd-m$V?<{c zXpeJt!x9v9ErS?Cg;een`bg>+6;iXsyn7Q7Q7$^z`w3O0!oVxYIZ`hv3-vHM-z%|t z>9BdBwG;uzRWCEiCK;Dpnfe>?*+vUnYQ9%Cl{xy=88#1Be zZU>uG6&>r+mmIQWQ9r*K(tP^yAw|Ahk{z62okT*f8r`U5c@bIKw%*7~hZWo$tqKbX)WQ z;eG2k9$u~BBz34IgY4MO*NjvK%6TG9WgF6t^yevcDag+_0k?0yG!!aJc`P~Fv^c(2 zsGEJ1m&|$QZO!lO)Fa26{k=Ie(a?-d!5+5puv*fbZ5&gUXqrcPQ2FlBiuF{}bnOqL zz6Qy7yDz$;=gg_xHh3!TCuKid_G*X^o{Q)2J#9?X=X@~ zSg`O!FUwi;S8ZLqi~YfKpX}V*o+y99{LTADgIBMg7z=#CnE+!UMqP>@DK-S_J z1F2IH43$EL{FX!sd(_^sTk&UsTyhp8yGO>QulA7-w8QXmQ-6v0VTsG&?CF~cB1JBN zg=2Sgm25R*YJ3a$nOQ_|%y4}Tm<|5iATVgjgiEF{Z3NTpiRa@=q)HK= zPZOIv<*xh$@}x&cdLqixcVA`o7+H_t2uY@Er=oJgyfWX@zhHl0lbkx6x=fxAQV&)4 zt2UHRS`0i|dJ$(Z(MHX2l?(sAkfy-v}u?e;sj zB`71{h7v-k;zNTso*sPUo-Qpn{yH80BL?Bw;#g%R9mWmU9fc03T}y-_4-7j;p}TJp z5GsYuPd8j7{799unmhBbf@u51(3b_nv7xj;4jCObtJl-VyMjh7j)L~TYIjl?$T&gj z;WsKjZ8rmNm^jSE6bFzF4E0Y2B`gc^p&j$(w4WtS)V^uiC3UO5K`@88>k|mtU`3GT z6JT{+%>D%LhX(-Ddk^9R3G8tg0iu2iAIpx6r(VJtWuaIqh{A+LQZpi?z44+9qM2*3 zn{A9el-ddpnT5-sL|#ceYn%jp@gdWX$y16Yd5$P#TZ8Vjpzjq*V8&QMK7E4!L+IhTd&f*bOTO5}X4ikx~q`A?o6K<#9By zya@zfjos%@#zLiF{gRi2YcBbEe&>exP`w?B%7z$Jse1}Hc(Qq;wA7F7gh6u1%qtE+ z89YnZ)MCG5+@zOBJUHm9{vD%8PU@5Vb$SaQx(feHCyJF01MVqJ*oPGJc=St7lHi5g zzitB!2g;Bu%fRzGY!F;vu*+p%SXr?c=@KCgQXe$8m2=*_SYIsjgs6M0)EG40|B`Ux zLsP-J4j>SWYiG63m^*5zW0Wi(23#*rm z?$;Azg2?ds{9KtoB?4-GVK1nwfQf%k`|XxK-*j^xz>z?XX1n~ceJqy&GzeN+Bctx@zaaK6FTFTN!0+*vvB;eY0 zmo$VZEe(RTWX>8NssvAQC6Ve_8I;>nwSNZC5E97gqW?Qgq=bH`3?TTHAFE(?s@9MV zSi{kIi1LuR$_i^>znQ~HfCZe3P%#;g*kvE{mcx+`BtL7GR9|YE)b&!pK>Hl4cznf{ zYj$d50J`RfJVuA0Kgkw^F#-HQj<2Nd6Z@;{w*f^d?Wi3d=&toOF<#}VzSW`)0rb01 z0@9@{BDi^WP7c?0gI}Nf9-!iY5D=?6!6Cnw9f(1rqSo==#9^Yb4ItR}KO`J>zt=F{ z)K3Ki?Jj;4P`=M&$&iEC4m7A=3nDkndWFM|Q&Ojj{pZ?zYV@r=d&cMxr92fTDmyMc zT94#E23(y5J09aEXmFmj(_=~gqd%-N?!pH_3rXO*c-mu4c$uRDG0dr2zS{eV0BMbU zb!JZ64=@ z6s7`8$4L)^e7Y}hdK-wj-CFk?YI6IyT7C?dy8UgCtt{0o8Mn(xBdEylfG#cK2-E%)AmTqY2L-TZ&;E|ZY52QA;4B&uCdTB*-*&y=B33s37Y z??VY2Y%+ZlJ9zL#K|tG$Hw9LAk@$6Qxq0!Vzde5CB~UE1oIK;>^!G%=QChpEH@Siz4SlZv};PVQL-D)aY^o6I!3# zB%v8n%m=FZ7_}9z&Hm6XAf0sb15^MkeO2u%%1IjXnWhu{l~_K7b14^)^s@HQM6+Ic zmfgdp*-z{H2hwBQv_$hNsiC^nTtMx5mC^M}ww9?nO%B~DX;@6(bQ|;U*^_aAS4)Oq z>bB@qtj??{Psu9?ep9~lPOirp4KFsiu=foc11>i>ElJ?2AeC+)DA+>$d@3KxE)jBrO+?psxwFN(9&rWE5cJk)uvu9%j%7K>QsCt61tA95lsw z3svwEm=e-Q7n;UmK1k=Wn?Oq3pOub&!Weutz4|PmkBqTMt^oas;m+VN!@!ZRa*RZ| zs!tS?%_0VYB5$~wal76*7Y^<;$#fAMFf|-jb*kxwZ~(nxG-=Rd!k&f?bf|Q)rLAUa z4#Kg1&S&wWRq?Cq1|HlAW6A6!gM+h`NeCdV z<<%U7faMDq$IM7vq#5wM;f<`u8Yge@3Fh-tOt7DgPOZ;h zQ*9sd$hZ&D&3R`HqzNS5plXYd2Pus;KwF%o$(zQ73h6x!+x+Y=apYvDk5|27>v5-> z&94H;1;@#2K(@uAyLlN7$85+;vL6B(MTdZO24%T6sAgwe`2z|q?BrYnqC3uC+f;N4 zSHH&=y5Zc`mL-}~zI=Kl+V?Oa%V?0&;)v`+1Un_O{fig6Bk)Q$DWgH4HQ8Vsk^k$5 zR6;lt1gy6_yGoW?$CpBGqn&5(>>uaz0O*`lj`9ymZ&VyEGR~eY2Qr^eXqXhv)t4yd zARh1h2;OpGhN+qVemNsK{cVp3D6{Zvo#V2cRF2Fsnm>Q9^V39f5!lutSs(W`DaAt( z@{B%79XNnusp#Z*EqJ};LdST)QAvj=^0}qMQGeL)3*(2B^>STibrQnIEs@NsL4VB3 zw@X^VV@#giMR>NwACn0;uM&#TtoGX!Z<-an5DCINO0j#5hG)qha5^@>DKk()mbnIv z#M4*w-p~xNmGyoLb&{3!opAa`;{dMPmQT;sHxGo}w1Bl!QBjf^=4K3AS(*?RLA7a<$72?i~VUWi8O@?{^r1EmqooMr%}3`vXgPOtyVDVdW?srzY$v@ zG!1W~L9H+??LLu8Y$_DDE0>q6KZL&>=OxZz-%wtZM0RV_w^vxszGJQ3y|Q9>YZuiv{U?bbNWJhTKZ9@!^pdQHH|@|5|L zw$tz5;^M$E^+64!YbQ)rhcFOR$!r!2zbtHL9C-pI?(T<*xe-O;=?y?9#-Ws#R@R=5 z$IW9Mw|!qYw3uOl#C)u~ANJ4PXI?`B*anbNzea)5VNGW`_6?C>kb1P3*|5(x60kNZ znK8|Vb;t!K9eJj*upMMqY>lF&pvZdl{6cLwHgXu4Y$|{qWRfj5O=L;>_&(&lmQr>K T$usP~4S { ); } } + + + diff --git a/lib/http/ApiService.dart b/lib/http/ApiService.dart index 3d9c863..89e1b0c 100644 --- a/lib/http/ApiService.dart +++ b/lib/http/ApiService.dart @@ -1693,7 +1693,7 @@ U6Hzm1ninpWeE+awIDAQAB static Future> getInspectRecordsDetail(String id) { return HttpManager().request( basePath, - '/app/checkrecord/goEdit', + '/app/customCheckRecord/goEdit', method: Method.post, data: { "CHECKRECORD_ID": id, @@ -1703,7 +1703,164 @@ U6Hzm1ninpWeE+awIDAQAB ); } + /// 获取检查记录详情2 + static Future> getInspectRecordsDetailTwo(String id) { + return HttpManager().request( + basePath, + '/app/customHidden/getCheckHidden', + method: Method.post, + data: { + "CHECKRECORD_ID": id, + "CORPINFO_ID": SessionService.instance.corpinfoId, + "USER_ID": SessionService.instance.loginUserId, + }, + ); + } + /// 获取详情图片列表 + static Future> getDetailImageList(String id) { + return HttpManager().request( + basePath, + '/app/imgfiles/listImgs', + method: Method.post, + data: { + "FOREIGN_KEY": id, + "TYPE": 14, + "CORPINFO_ID": SessionService.instance.corpinfoId, + "USER_ID": SessionService.instance.loginUserId, + }, + ); + } + + + + /// 获取标准排查列表 + static Future> getStandardInvestigationList(String id,String keyWord) { + return HttpManager().request( + basePath, + '/app/hiddenDangerCheckStandardCustom/checkList', + method: Method.post, + data: { + "USER_NAME": SessionService.instance.username, + "CHECK_DEPARTMENT_ID": id, + "SUB_DEPARTMENT_IDS": keyWord, //选择的部门 + "IS_MAIN":SessionService.instance. loginUser?["ISMAIN"]??"0", + "CORPINFO_ID": SessionService.instance.corpinfoId, + "USER_ID": SessionService.instance.loginUserId, + "ISSUPERVISE": SessionService.instance. loginUser?["ISSUPERVISE"]??"0", + }, + ); + } + + /// 获取隐患排查列表 + static Future> getHazardInvestigationList(String id,String keyWord) { + return HttpManager().request( + basePath, + '/app/listmanager/checkListV2', + method: Method.post, + data: { + "USER_NAME": SessionService.instance.username, + "CHECK_DEPARTMENT_ID": id, + "SUB_DEPARTMENT_IDS": keyWord, //选择的部门 + "IS_MAIN":SessionService.instance. loginUser?["ISMAIN"]??"0", + "CORPINFO_ID": SessionService.instance.corpinfoId, + "USER_ID": SessionService.instance.loginUserId, + "ISSUPERVISE": SessionService.instance. loginUser?["ISSUPERVISE"]??"0", + }, + ); + } + + /// 获取检查项目列表 + static Future> getInspectionItemList(String id) { + return HttpManager().request( + basePath, + '/app/hiddenDangerCheckStandardCustom/getCheckItem', + method: Method.post, + data: { + "CUSTOM_ID": id, + "USER_NAME": SessionService.instance.username, + "CORPINFO_ID": SessionService.instance.corpinfoId, + "USER_ID":SessionService.instance.loginUserId, + }, + ); + } + + /// 获取检查项目列表 + static Future> getRiskPointsList(String id) { + return HttpManager().request( + basePath, + '/app/listmanager/getRisk', + method: Method.post, + data: { + "LISTMANAGER_ID": id, + "USER_NAME": SessionService.instance.username, + "CORPINFO_ID": SessionService.instance.corpinfoId, + "USER_ID":SessionService.instance.loginUserId, + }, + ); + } + + /// 检查人员是否绑定定位卡 + static Future> isInElectronicFence(String id) { + return HttpManager().request( + basePath, + '/app/listmanager/isInElectronicFence', + method: Method.post, + data: { + "ELECTRONIC_FENCE_ID": id, + "USER_NAME": SessionService.instance.username, + "PLS_ID":"", + "CORPINFO_ID": SessionService.instance.corpinfoId, + "USER_ID":SessionService.instance.loginUserId, + }, + ); + } + + /// 获取排查项 + static Future> getInvestigationItems(final item) { + return HttpManager().request( + basePath, + '/app/hiddenDangerCheckStandardCustom/goCheck', + method: Method.post, + data: { + "CUSTOM_ID": item["CUSTOM_ID"], + "CHECK_ITEM": item["CHECK_ITEM"], + "USER_NAME": SessionService.instance.username, + "CORPINFO_ID": SessionService.instance.corpinfoId, + "USER_ID":SessionService.instance.loginUserId, + }, + ); + } + + + /// 获取已上传图片 + static Future> getAlreadyUpImages(String id) { + return HttpManager().request( + basePath, + '/app/imgfiles/listImgs', + method: Method.post, + data: { + "FOREIGN_KEY": id, + "TYPE": 14, + "CORPINFO_ID": SessionService.instance.corpinfoId, + "USER_ID":SessionService.instance.loginUserId, + }, + ); + } + + /// 删除已上传图片 + static Future> onImageRemoved(String id) { + return HttpManager().request( + basePath, + '/app/imgfiles/delete', + method: Method.post, + data: { + "IMGFILES_ID": id, + "CORPINFO_ID": SessionService.instance.corpinfoId, + "USER_ID":SessionService.instance.loginUserId, + }, + ); + } } diff --git a/lib/http/HttpManager.dart b/lib/http/HttpManager.dart index ae27331..0947bb6 100644 --- a/lib/http/HttpManager.dart +++ b/lib/http/HttpManager.dart @@ -130,10 +130,10 @@ class HttpManager { : {}; final result = json['result'] as String?; final msg = json['msg'] as String? ?? json['message'] as String? ?? ''; - if (result != 'success') { - // 非 success 都抛异常 - throw ApiException(result ?? 'unknown', msg); - } + // if (result != 'success') { + // // 非 success 都抛异常 + // throw ApiException(result ?? 'unknown', msg); + // } return json; } } diff --git a/lib/pages/app/Danger_paicha/check_record_detail_page.dart b/lib/pages/app/Danger_paicha/check_record_detail_page.dart index 4bb391f..b531776 100644 --- a/lib/pages/app/Danger_paicha/check_record_detail_page.dart +++ b/lib/pages/app/Danger_paicha/check_record_detail_page.dart @@ -2,8 +2,14 @@ import 'package:flutter/material.dart'; import 'package:photo_view/photo_view.dart'; import 'package:photo_view/photo_view_gallery.dart'; +import 'package:qhd_prevention/customWidget/ItemWidgetFactory.dart'; +import 'package:qhd_prevention/customWidget/single_image_viewer.dart'; import 'package:qhd_prevention/customWidget/toast_util.dart'; import 'package:qhd_prevention/http/ApiService.dart'; +import 'package:qhd_prevention/pages/app/danger_wait_list_page.dart'; +import 'package:qhd_prevention/pages/app/detail_images_page.dart'; +import 'package:qhd_prevention/pages/app/hidden_record_detail_page.dart'; +import 'package:qhd_prevention/tools/tools.dart'; @@ -23,28 +29,25 @@ class _CheckRecordDetailPageState extends State { // {"RISKPOINT_ID": "3", "CHECK_CONTENT": "电气线路检查", "ISNORMAL": "2"}, // ]; - List> otherHiddenList = [ - {"HIDDEN_ID": "3001", "HIDDENDESCR": "应急通道堵塞"}, - {"HIDDEN_ID": "3002", "HIDDENDESCR": "安全标识缺失"}, - ]; + // List> otherHiddenList = [ + // {"HIDDEN_ID": "3001", "HIDDENDESCR": "应急通道堵塞"}, + // {"HIDDEN_ID": "3002", "HIDDENDESCR": "安全标识缺失"}, + // ]; + + Map pd = { + "LIST_NAME": "", + "SCREENTYPENAME": "", + "USERS": "", + "CHECK_TIME": "", + "DEPARTMENT_NAME": "", + "POST_NAME": "", + "PERIODNAME": "", + "TYPENAME": "", + "START_DATE": "", + "END_DATE": "", + }; - // Map pd = { - // "LIST_NAME": "月度安全检查清单", - // "SCREENTYPENAME": "常规排查", - // "USERS": "张三", - // "CHECK_TIME": "2023-06-15 10:30", - // "DEPARTMENT_NAME": "安全部", - // "POST_NAME": "安全主管", - // "PERIODNAME": "每月一次", - // "TYPENAME": "临时", - // "START_DATE": "2023-06-01", - // "END_DATE": "2023-06-30", - // }; - List files = [ - "https://example.com/sign1.jpg", - "https://example.com/sign2.jpg", - ]; // 地图相关 // final LatLng _center = const LatLng(39.8883, 119.519); @@ -55,9 +58,10 @@ class _CheckRecordDetailPageState extends State { bool _showImageViewer = false; - dynamic pd; - List imageList =[]; + // dynamic pd; + List imageList =[]; List varList =[]; + List hiddenList =[]; @override void initState() { @@ -71,6 +75,7 @@ class _CheckRecordDetailPageState extends State { _getInspectRecordsDetail(); + _getInspectRecordsDetailTwo(); } Future _getInspectRecordsDetail() async { @@ -83,7 +88,7 @@ class _CheckRecordDetailPageState extends State { pd= result['pd']; varList = result['varList'] ?? []; for(int i=0;i { } } + Future _getInspectRecordsDetailTwo() async { + try { + + final result = await ApiService.getInspectRecordsDetailTwo(widget.id); + if (result['result'] == 'success') { + final List newList = result['hiddenList'] ?? []; + setState(() { + hiddenList.addAll(newList); + + + }); + + }else{ + ToastUtil.showNormal(context, "加载数据失败"); + // _showMessage('加载数据失败'); + } + } catch (e) { + // 出错时可以 Toast 或者在页面上显示错误状态 + print('加载数据失败:$e'); + } + } + @override Widget build(BuildContext context) { @@ -197,19 +224,19 @@ class _CheckRecordDetailPageState extends State { VoidCallback? onTap; switch (item["ISNORMAL"]) { - case "0": + case 0: status = "合格"; color = Colors.blue; if (item["IMGCOUNT"] > 0) { onTap = () => _goToImgs(item["RECORDITEM_ID"]); } break; - case "1": + case 1: status = "不合格"; color = Colors.blue; onTap = () => _goToDetail(item["HIDDEN_ID"]); break; - case "2": + case 2: status = "不涉及"; color = Colors.blue; break; @@ -252,7 +279,7 @@ class _CheckRecordDetailPageState extends State { _buildTableHeaderCell("操作"), ], ), - ...otherHiddenList.map((item) => TableRow( + ...hiddenList.map((item) => TableRow( children: [ Padding( padding: EdgeInsets.all(8), @@ -312,14 +339,14 @@ class _CheckRecordDetailPageState extends State { ), child: Column( children: [ - _buildInfoRow("清单名称", pd["LIST_NAME"]), - _buildInfoRow("排查清单类型", pd["SCREENTYPENAME"]), - _buildInfoRow("检查人", pd["USERS"]), - _buildInfoRow("检查时间", pd["CHECK_TIME"]), - _buildInfoRow("所属部门", pd["DEPARTMENT_NAME"]), - _buildInfoRow("所属岗位", pd["POST_NAME"]), - _buildInfoRow("排查周期", pd["PERIODNAME"]), - _buildInfoRow("清单类型", pd["TYPENAME"]), + _buildInfoRow("清单名称", pd["LIST_NAME"]?? ''), + _buildInfoRow("排查清单类型", pd["SCREENTYPENAME"]?? ''), + _buildInfoRow("检查人", pd["USERS"]?? ''), + _buildInfoRow("检查时间", pd["CHECK_TIME"]?? ''), + _buildInfoRow("所属部门", pd["DEPARTMENT_NAME"]?? ''), + _buildInfoRow("所属岗位", pd["POST_NAME"]?? ''), + _buildInfoRow("排查周期", pd["PERIODNAME"]?? ''), + _buildInfoRow("清单类型", pd["TYPENAME"]?? ''), if (pd["TYPENAME"] == "临时") _buildInfoRow("排查日期", "${pd["START_DATE"]} - ${pd["END_DATE"]}"), ], @@ -346,96 +373,48 @@ class _CheckRecordDetailPageState extends State { Widget _buildSignPhotos() { return Padding( padding: EdgeInsets.symmetric(horizontal: 15, vertical: 20), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text("签字照片", style: TextStyle(fontWeight: FontWeight.bold)), - SizedBox(height: 10), - Container( - height: 120, - child: ListView.builder( - scrollDirection: Axis.horizontal, - itemCount: files.length, - itemBuilder: (context, index) { - return GestureDetector( - onTap: () { - setState(() { - _currentImageIndex = index; - _showImageViewer = true; - }); - }, - child: Container( - width: 150, - margin: EdgeInsets.only(right: 10), - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(4), - image: DecorationImage( - image: NetworkImage(files[index]), - fit: BoxFit.cover, - ), - ), - ), - ); - }, - ), - ), - ], + child: ListItemFactory.createTextImageItem( + text: "签字照片", + imageUrls: imageList, + onImageTapped: (index) { + presentOpaque( + SingleImageViewer(imageUrl:ApiService.baseImgPath + imageList[index]), + context, + ); + }, ), ); } void _goToDetail(String hiddenId) { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => Scaffold( - appBar: AppBar(title: Text("隐患详情")), - body: Center(child: Text("隐患ID: $hiddenId")), - ), - ), - ); + dynamic item={"HIDDEN_RISKSTANDARD":"2","HIDDEN_ID":hiddenId}; + pushPage(HiddenRecordDetailPage(DangerType.detailsHiddenInvestigationRecord,item), context); + // Navigator.push( + // context, + // MaterialPageRoute( + // builder: (context) => Scaffold( + // appBar: AppBar(title: Text("隐患详情")), + // body: Center(child: Text("隐患ID: $hiddenId")), + // ), + // ), + // ); } void _goToImgs(String recordItemId) { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => Scaffold( - appBar: AppBar(title: Text("图片详情")), - body: Center(child: Text("记录项ID: $recordItemId")), - ), - ), - ); + pushPage(DetailImagesPage(recordItemId), context); + // Navigator.push( + // context, + // MaterialPageRoute( + // builder: (context) => Scaffold( + // appBar: AppBar(title: Text("图片详情")), + // body: Center(child: Text("记录项ID: $recordItemId")), + // ), + // ), + // ); + } - Widget _buildImageViewer() { - return Stack( - children: [ - PhotoViewGallery.builder( - itemCount: files.length, - builder: (context, index) { - return PhotoViewGalleryPageOptions( - imageProvider: NetworkImage(files[index]), - minScale: PhotoViewComputedScale.contained, - maxScale: PhotoViewComputedScale.covered * 2, - ); - }, - scrollPhysics: ClampingScrollPhysics(), - backgroundDecoration: BoxDecoration(color: Colors.black), - pageController: PageController(initialPage: _currentImageIndex), - onPageChanged: (index) => setState(() => _currentImageIndex = index), - ), - Positioned( - top: 40, - right: 20, - child: IconButton( - icon: Icon(Icons.close, color: Colors.white, size: 30), - onPressed: () => setState(() => _showImageViewer = false), - ), - ), - ], - ); - } + } \ No newline at end of file diff --git a/lib/pages/app/Danger_paicha/check_record_list_page.dart b/lib/pages/app/Danger_paicha/check_record_list_page.dart index 30f6115..d7d2c30 100644 --- a/lib/pages/app/Danger_paicha/check_record_list_page.dart +++ b/lib/pages/app/Danger_paicha/check_record_list_page.dart @@ -65,6 +65,9 @@ class _CheckRecordListPageState extends State } void getListData(){ + listDates.clear(); + alreadyList.clear(); + overTimeList.clear(); switch(widget.type ){ case 1://检查记录 _getCheckRecordListOne(); diff --git a/lib/pages/app/Danger_paicha/danger_image_updata_page.dart b/lib/pages/app/Danger_paicha/danger_image_updata_page.dart new file mode 100644 index 0000000..d4820ff --- /dev/null +++ b/lib/pages/app/Danger_paicha/danger_image_updata_page.dart @@ -0,0 +1,208 @@ +import 'dart:io'; + +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:qhd_prevention/customWidget/photo_picker_row.dart'; +import 'package:qhd_prevention/customWidget/toast_util.dart'; +import 'package:qhd_prevention/http/ApiService.dart'; +import 'package:qhd_prevention/pages/my_appbar.dart'; + + +class PhotoItem { + final String id; + final String filePath; + final String type; + + PhotoItem({ + required this.id, + required this.filePath, + required this.type,//1 网络 2 本地 + }); +} + + +class DangerImageUpdataPage extends StatefulWidget { + const DangerImageUpdataPage(this.id, {super.key}); + + final String id; + + @override + State createState() => _DangerImageUpdataPageState(); +} + +class _DangerImageUpdataPageState extends State { + + List _imgList = []; + + List _yinHuanImages = []; + // List alreadyImageList=[]; + + @override + void initState() { + // TODO: implement initState + super.initState(); + + _getAlreadyUpImages(); + } + + Future _getAlreadyUpImages() async { + try { + + final result = await ApiService.getAlreadyUpImages(widget.id); + if (result['result'] == 'success') { + final List newList = result['imgs'] ?? []; + setState(() { + for(int i=0;i value) { + + }, + + ), + + // 下一步按钮 + Container( + margin: const EdgeInsets.only(bottom: 20), + height: 50, + decoration: BoxDecoration( + color: Colors.green, + borderRadius: BorderRadius.circular(10), + boxShadow: [ + BoxShadow( + color: Colors.black12, + blurRadius: 6, + offset: Offset(0, 2), + ), + ], + ), + child: + SizedBox( + width: screenWidth - 30, + height: 50, + child: TextButton( + onPressed: () { + if(_imgList.length>4){ + ToastUtil.showNormal(context, "图片不能大于4张"); + return; + } + for(int i=0;i<_imgList.length;i++){ + if(_imgList[i].type=="2") { + _addImgFiles(_yinHuanImages[i], "14", widget.id); + } + } + ToastUtil.showNormal(context, "提交成功"); + Navigator.pop(context); + }, + child: Text( + "提交", + style: TextStyle( + color: Colors.white, + fontSize: 18, + fontWeight: FontWeight.bold, + ), + ), + ), + ), + ), + ],) + + ); + } + + Future _addImgFiles(String imagePath,String type,String id) async { + try { + + final raw = await ApiService.addImgFiles( imagePath, type, id); + if (raw['result'] == 'success') { + return raw['imgPath']; + }else{ + // _showMessage('反馈提交失败'); + return ""; + } + + } catch (e) { + // 出错时可以 Toast 或者在页面上显示错误状态 + print('加载首页数据失败:$e'); + return ""; + } + } + + Future _onImageRemoved(PhotoItem item) async { + try { + + final raw = await ApiService.onImageRemoved( item.id); + if (raw['result'] == 'success') { + return raw['imgPath']; + }else{ + // _showMessage('反馈提交失败'); + return ""; + } + + } catch (e) { + // 出错时可以 Toast 或者在页面上显示错误状态 + print('加载首页数据失败:$e'); + return ""; + } + } + +} diff --git a/lib/pages/app/ai_alarm_page.dart b/lib/pages/app/ai_alarm_page.dart index 2d4315f..c78fb08 100644 --- a/lib/pages/app/ai_alarm_page.dart +++ b/lib/pages/app/ai_alarm_page.dart @@ -49,7 +49,7 @@ class _AiAlarmPageState extends State void _handleItemTap(NotificationItem item, int index) { print("点击了是: ${item.title}"); - pushPage(RiskListPage(), context); + // pushPage(RiskListPage(), context); } // 显示分类选择器 diff --git a/lib/pages/app/application_page.dart b/lib/pages/app/application_page.dart index 7e62389..8fe3a98 100644 --- a/lib/pages/app/application_page.dart +++ b/lib/pages/app/application_page.dart @@ -34,7 +34,7 @@ class ApplicationPage extends StatelessWidget { switch (item) { case AppItem.riskInspection: // 跳转到隐患排查页面 - pushPage(DangerPage(), context); + pushPage(DangerPage(1), context); break; case AppItem.quickReport: // 跳转到隐患快报页面 @@ -54,6 +54,7 @@ class ApplicationPage extends StatelessWidget { break; case AppItem.supervisionRectification: // 跳转到监管帮扶隐患整改页面 + pushPage(DangerPage(2), context); //Navigator.push(context, MaterialPageRoute(builder: (_) => SupervisionRectificationPage())); break; case AppItem.supervisionRecord: diff --git a/lib/pages/app/danger_wait_list_page.dart b/lib/pages/app/danger_wait_list_page.dart index f456f52..dfa5770 100644 --- a/lib/pages/app/danger_wait_list_page.dart +++ b/lib/pages/app/danger_wait_list_page.dart @@ -15,6 +15,8 @@ import 'hidden_record_detail_page.dart'; enum DangerType { + detailsHiddenInvestigationRecord("排查隐患记录", "排查隐患记录-详情"), + ristRecord("隐患记录", "隐患记录-详情"), wait("待整改隐患", "隐患整改"), expired("超期未整改", "超期未整改-详情"), @@ -22,6 +24,7 @@ enum DangerType { acceptance("已验收隐患", "已验收隐患"), acceptanced("已验收隐患", "已验收隐患-详情"); + final String displayName; final String detailTitle; diff --git a/lib/pages/app/detail_images_page.dart b/lib/pages/app/detail_images_page.dart new file mode 100644 index 0000000..c773f11 --- /dev/null +++ b/lib/pages/app/detail_images_page.dart @@ -0,0 +1,79 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:qhd_prevention/customWidget/ItemWidgetFactory.dart'; +import 'package:qhd_prevention/customWidget/single_image_viewer.dart'; +import 'package:qhd_prevention/customWidget/toast_util.dart'; +import 'package:qhd_prevention/http/ApiService.dart'; +import 'package:qhd_prevention/pages/my_appbar.dart'; +import 'package:qhd_prevention/tools/tools.dart'; + + + + + +class DetailImagesPage extends StatefulWidget { + const DetailImagesPage(this.recordItemId, {super.key}); + + final String recordItemId; + + @override + State createState() => _DetailImagesPageState(); +} + + +class _DetailImagesPageState extends State { + + + List detailImageList =[]; + + @override + void initState() { + // TODO: implement initState + super.initState(); + _getDetailImageList(); + } + + Future _getDetailImageList() async { + try { + + final result = await ApiService.getDetailImageList(widget.recordItemId); + if (result['result'] == 'success') { + final List newList = result['imgs'] ?? []; + + for(int i=0;i { Divider(height: 1), - _buildInfoItem('整改部门', pd['HAVESCHEME']=="0" ? '无':'有'), + _buildInfoItem('整改方案', pd['HAVESCHEME']=="1" ? '有':'无'), Divider(height: 1), if(pd['HAVESCHEME']=="1") Column( @@ -340,7 +340,7 @@ class _HiddenRecordDetailPageState extends State { ), Divider(height: 1), - _buildInfoItem('整改计划', pd['HAVEPLAN']=="0" ? '无':'有'), + _buildInfoItem('整改计划', pd['HAVEPLAN']=="1" ? '有':'无'), Divider(height: 1), if(pd['HAVEPLAN']=="1") ListItemFactory.createTextImageItem( diff --git a/lib/pages/home/home_page.dart b/lib/pages/home/home_page.dart index 0e7974c..a05e85d 100644 --- a/lib/pages/home/home_page.dart +++ b/lib/pages/home/home_page.dart @@ -341,7 +341,7 @@ class _HomePageState extends State { return GestureDetector( onTap: () { if (index == 1) { - pushPage(DangerPage(), context); + pushPage(DangerPage(3), context); } else if (index == 2) { pushPage(DangerWaitListPage(DangerType.wait, 2), context); } else if (index == 3) { diff --git a/lib/pages/home/work/danger_page.dart b/lib/pages/home/work/danger_page.dart index 2c70f4f..730fa7c 100644 --- a/lib/pages/home/work/danger_page.dart +++ b/lib/pages/home/work/danger_page.dart @@ -4,6 +4,8 @@ import 'package:flutter/material.dart'; import 'package:qhd_prevention/customWidget/danner_repain_item.dart'; import 'package:qhd_prevention/customWidget/department_picker.dart'; import 'package:qhd_prevention/customWidget/search_bar_widget.dart'; +import 'package:qhd_prevention/customWidget/toast_util.dart'; +import 'package:qhd_prevention/http/ApiService.dart'; import 'package:qhd_prevention/pages/home/scan_page.dart'; import 'package:qhd_prevention/pages/home/work/risk_list_page.dart'; import 'package:qhd_prevention/pages/my_appbar.dart'; @@ -11,8 +13,9 @@ import 'package:qhd_prevention/tools/SmallWidget.dart'; import 'package:qhd_prevention/tools/tools.dart'; class DangerPage extends StatefulWidget { - const DangerPage({super.key}); + const DangerPage(this.type, {super.key}); + final int type; @override _DangerPageState createState() => _DangerPageState(); } @@ -22,36 +25,168 @@ class _DangerPageState extends State late TabController _tabController; int _selectedTab = 0; - // 模拟数据 - final List _notifications = List.generate(10, (i) { - bool read = i % 3 == 0; - String title = '测试数据标题标题 ${i + 1}'; - String time = '2025-06-${10 + i} 12:3${i}'; - return NotificationItem(title, time); - }); + // // 模拟数据 + // final List _notifications = List.generate(10, (i) { + // bool read = i % 3 == 0; + // String title = '测试数据标题标题 ${i + 1}'; + // String time = '2025-06-${10 + i} 12:3${i}'; + // return NotificationItem(title, time); + // }); final TextEditingController _searchController = TextEditingController(); + String appBarTitle=""; + String id=""; + String searchKey=""; + String searchName=""; + bool showBottomTags=false; + + + + + List listOne = []; + List listTwo = []; + + List listDates = []; + @override void initState() { super.initState(); _tabController = TabController(length: 2, vsync: this); _tabController.addListener(() { - if (!_tabController.indexIsChanging) { - setState(() => _selectedTab = _tabController.index); + + if (_tabController.indexIsChanging) { + setState(() => _selectedTab = _tabController.index); + print('切换到标签:${_tabController.index}'); + listDates.clear(); + setState(() { + if(_selectedTab==0){ + listDates.addAll(listOne); + + if(widget.type==1){ + showBottomTags=true; + }else{ + showBottomTags=false; + } + }else{ + listDates.addAll(listTwo); + showBottomTags=false; + } + }); + } + }); + + + + if(widget.type==1){ + showBottomTags=true; + }else{ + showBottomTags=false; } - }); + + id=SessionService.instance.loginUser?["DEPARTMENT_ID"]??""; + getListData(); + } + + void getListData(){ + listDates.clear(); + listOne.clear(); + listTwo.clear(); + switch(widget.type ){ + case 1://隐患排查 + appBarTitle="隐患排查"; + _getHazardInvestigationList(); + break; + case 2://标准排查 + appBarTitle="标准排查"; + _getStandardInvestigationList(); + break; + // case 3://首页-待排查 + // appBarTitle="待排查"; + // // _getStandardInvestigationRecordList(_page,keyWord,"","","","","","",addList); + // break; + } + } + + Future _getHazardInvestigationList() async { + try { + + final result = await ApiService.getHazardInvestigationList(id,searchKey); + if (result['result'] == 'success') { + final List newList = result['varList'] ?? []; + setState(() { + + for(int i=0;i _getStandardInvestigationList() async { + try { + + final result = await ApiService.getStandardInvestigationList(id,searchKey); + if (result['result'] == 'success') { + final List newList = result['varList'] ?? []; + setState(() { + + for(int i=0;i backgroundColor: Colors.transparent, builder: (ctx) => DepartmentPicker(onSelected: (id, name) { + setState(() { + searchKey=id; + searchName=name; + _searchController.text=name; + }); + getListData(); }), ); @@ -101,49 +242,56 @@ class _DangerPageState extends State tabs: const [Tab(text: '待排查'), Tab(text: '已排查')], ), - // Search bar - Padding( + Container( + color: Colors.white, + child: Padding( padding: const EdgeInsets.all(10), child: SearchBarWidget( showResetButton: true, onInputTap: () { showCategoryPicker(); + }, hintText: "", isClickableOnly: true, onSearch: (text) { print('----------'); + // searchKey=text; + // getListData(); }, controller: _searchController, ), ), + ), // List Expanded( - child: ListView.separated( - itemCount: _notifications.length, + child: listDates.isEmpty + ? NoDataWidget.show() + : ListView.separated( + padding: EdgeInsets.only(top: 15), + itemCount: listDates.length, separatorBuilder: (_, __) => const SizedBox(), itemBuilder: (context, index) { - NotificationItem item = _notifications[index]; + final item = listDates[index]; return GestureDetector( onTap: () => _handleItemTap(item, index), child: DannerRepainItem( - title: '测试--------new', + title: item['NAME'], details: [ - '清单类型:测试', - '排查周期:测试', - '包含检查项:3', - '负责人:是测试', - '起始时间:2025-6-20', - '', - '测试一下是否跳过时间', + '清单类型:${item['TYPENAME']}', + '排查周期:${item['PERIODNAME']}', + '包含检查项:${item['count']}', + '负责人:${item['USER_NAME']}', + '起始时间:${item['START_DATE']}-${item['END_DATE']}', + ], - showBottomTags: true, + showBottomTags: showBottomTags, bottomTags: [ - riskTagText(1, "重大风险:0"), - riskTagText(2, "较大:3"), - riskTagText(3, "一般:1"), - riskTagText(4, "低:0"), + riskTagText(1, "重大风险:${item['ACOUNT']}"), + riskTagText(2, "较大:${item['BCOUNT']}"), + riskTagText(3, "一般:${item['CCOUNT']}"), + riskTagText(4, "低:${item['DCOUNT']}"), ], ), ); diff --git a/lib/pages/home/work/danger_project_page.dart b/lib/pages/home/work/danger_project_page.dart index 6aacf0b..0557c7e 100644 --- a/lib/pages/home/work/danger_project_page.dart +++ b/lib/pages/home/work/danger_project_page.dart @@ -1,11 +1,16 @@ import 'package:flutter/material.dart'; +import 'package:flutter_html/flutter_html.dart'; +import 'package:qhd_prevention/customWidget/toast_util.dart'; +import 'package:qhd_prevention/http/ApiService.dart'; +import 'package:qhd_prevention/pages/app/Danger_paicha/danger_image_updata_page.dart'; import 'package:qhd_prevention/tools/h_colors.dart'; import 'package:qhd_prevention/tools/tools.dart'; import 'package:qhd_prevention/pages/my_appbar.dart'; class DangerProjectPage extends StatefulWidget { - const DangerProjectPage({super.key}); + const DangerProjectPage(this.item, {super.key}); + final item; @override State createState() => _DangerProjectPageState(); } @@ -36,88 +41,171 @@ class _DangerProjectPageState extends State { }, ]; + List listDates = []; + + @override + void initState() { + // TODO: implement initState + super.initState(); + _getInvestigationItems(); + } + + Future _getInvestigationItems( ) async { + try { + + final result = await ApiService.getInvestigationItems(widget.item); + if (result['result'] == 'success') { + final List newList = result['varList'] ?? []; + setState(() { + listDates.addAll(newList); + }); + + }else{ + ToastUtil.showNormal(context, result['msg']); + // _showMessage('加载数据失败'); + } + } catch (e) { + // 出错时可以 Toast 或者在页面上显示错误状态 + print('加载数据失败:$e'); + + } + } + @override Widget build(BuildContext context) { final screenWidth = MediaQuery.of(context).size.width; return Scaffold( backgroundColor: h_backGroundColor(), - appBar: MyAppbar(title: "隐患排除项"), + appBar: MyAppbar(title: "排查项"), body: SafeArea( - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 10), - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - // 内容卡片 - Card( - color: Colors.white, - child: Container( - padding: const EdgeInsets.all(16), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - // 问题描述 - Text( - "存在风险:1、罐体破损、变形、锈蚀等;2、附件安装不正确、不牢固;3、铭牌模糊无法识别;4、压力表不灵敏、不准确;5、报警装置故障失效;6、阀门锈蚀、泄露;7、洗眼器、防毒面具等应急设备缺失、过期。检查内容:1、定期检查獬体倩况,如发现破损、变形、锈蚀等情况及时进行维修;2、严格按照系统设计进行安装附件,确保附件安装牢固;3、及时清理铭牌上的异物,确保铭牌清晰可辨:4、定期检查压力表,确保压力表灵敏有效;5、定期检查报警装置,确保报警装置齐全有效;6、按时对阀门进行养护及定时检查紧固,及时更换阀门填料,操作时注意观察压帽是否随阀轴转动;7、定期检查应急设备,确保应急设备齐全有效", - style: TextStyle( - fontSize: 16, - color: Colors.grey[700], - height: 1.5, - ), - ), - - // 单选按钮组 - Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: - _options.map((option) { - return _buildOptionButton( - context: context, - value: option['value'], - label: option['label'], - icon: option['icon'], - color: option['color'], - screenWidth: screenWidth, - ); - }).toList(), - ), - - ], + child:Column( + children: [ + Expanded(child: listDates.isEmpty + ? NoDataWidget.show() + : ListView.separated( + itemCount: listDates.length, + separatorBuilder: (_, __) => const SizedBox(), + itemBuilder: (context, index) { + final item = listDates[index]; + return GestureDetector( + // onTap: () => _selectItem(item), + child: _itemCell(screenWidth,item), + ); + }, + )), + // 下一步按钮 + Container( + margin: const EdgeInsets.only(bottom: 20), + height: 50, + decoration: BoxDecoration( + color: _selectedValue != null ? Colors.green : Colors.grey, + borderRadius: BorderRadius.circular(10), + boxShadow: [ + BoxShadow( + color: Colors.black12, + blurRadius: 6, + offset: Offset(0, 2), ), - ), + ], ), - Spacer(), - // 下一步按钮 - Container( - margin: const EdgeInsets.only(bottom: 20), + child: + SizedBox( + width: screenWidth - 30, height: 50, - decoration: BoxDecoration( - color: _selectedValue != null ? Colors.green : Colors.grey, - borderRadius: BorderRadius.circular(10), - boxShadow: [ - BoxShadow( - color: Colors.black12, - blurRadius: 6, - offset: Offset(0, 2), - ), - ], - ), child: TextButton( - onPressed: _selectedValue != null ? _submit : null, - child: Text( - "提交", - style: TextStyle( - color: Colors.white, - fontSize: 18, - fontWeight: FontWeight.bold, - ), + onPressed: _selectedValue != null ? _submit : null, + child: Text( + "提交", + style: TextStyle( + color: Colors.white, + fontSize: 18, + fontWeight: FontWeight.bold, ), ), + ), ), - ], - ), + ), + + ], ), + + // _itemCell(screenWidth), + ), + ); + } + + + + Widget _itemCell(final screenWidth,final item) { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 10), + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + // 内容卡片 + Card( + color: Colors.white, + child: Container( + padding: const EdgeInsets.all(16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // 问题描述 + Text( + "检查内容:${item["CHECK_CONTENT"]}", + style: TextStyle( + fontSize: 16, + color: Colors.grey[700], + height: 1.5, + ), + ), + Text( + "检查标准:${item["CHECK_STANDARD"]}", + style: TextStyle( + fontSize: 16, + color: Colors.grey[700], + height: 1.5, + ), + ), + + // 单选按钮组 + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: + _options.map((option) { + return _buildOptionButton( + context: context, + value: option['value'], + label: option['label'], + icon: option['icon'], + color: option['color'], + screenWidth: screenWidth, + onImageTap: () { + pushPage(DangerImageUpdataPage(item["RECORDITEM_ID"]), context); + }, + ); + }).toList(), + ), + + if(_selectedValue=="option1") + Card( + color: const Color(0xFFF1F1F1), + child: Container( + width: screenWidth, + padding: EdgeInsets.all(10), + child: Text(item["CHECK_QUALIFIED"],style:TextStyle(color: Colors.black,fontSize: 12)), + ) + ), + + + ], + ), + ), + ), + // Spacer(), + + ], ), ); } @@ -130,6 +218,7 @@ class _DangerProjectPageState extends State { required IconData icon, required Color color, required double screenWidth, + VoidCallback? onImageTap, }) { final isSelected = _selectedValue == value; final buttonWidth = (screenWidth - 60) / 3 - 10; // 计算按钮宽度 @@ -157,6 +246,25 @@ class _DangerProjectPageState extends State { color: isSelected ? color : Colors.grey[600], ), ), + if(value=="option1"&&_selectedValue=="option1") + // 添加图片点击处理 + GestureDetector( + onTap: () { + // 防止事件冒泡到父级 GestureDetector + if (onImageTap != null) { + onImageTap(); + } + }, + behavior: HitTestBehavior.opaque, // 确保透明区域也能点击 + child: Transform.translate( + offset: Offset(0, -6), // Y轴负值向上移动 + child: Image.asset( + "assets/images/gantan-blue.png", + width: 15, + height: 15, + ), + ), + ), ], ), ), diff --git a/lib/pages/home/work/risk_list_page.dart b/lib/pages/home/work/risk_list_page.dart index c3b751e..55e17e7 100644 --- a/lib/pages/home/work/risk_list_page.dart +++ b/lib/pages/home/work/risk_list_page.dart @@ -1,4 +1,6 @@ import 'package:flutter/material.dart'; +import 'package:qhd_prevention/customWidget/toast_util.dart'; +import 'package:qhd_prevention/http/ApiService.dart'; import 'package:qhd_prevention/pages/home/scan_page.dart'; import 'package:qhd_prevention/pages/home/work/danger_project_page.dart'; import 'package:qhd_prevention/pages/my_appbar.dart'; @@ -6,7 +8,11 @@ import 'package:qhd_prevention/tools/h_colors.dart'; import 'package:qhd_prevention/tools/tools.dart'; class RiskListPage extends StatefulWidget { - const RiskListPage({super.key}); + const RiskListPage(this.type, this.id, {super.key}); + + final int type; + final String id; + @override State createState() => _riskListPageState(); @@ -14,19 +20,80 @@ class RiskListPage extends StatefulWidget { class _riskListPageState extends State { - final List _dataList = [ - Model("青椒皮蛋鸡尾酒哦普佛椒皮鸡尾酒哦普佛椒皮鸡尾鸡尾酒哦普佛椒皮鸡尾鸡尾酒哦普佛椒皮鸡尾鸡尾酒哦普佛椒皮鸡尾鸡尾酒哦普佛"), - Model("dqfiqfjpoqo阿迪王期待期待五千多强大f"), - Model("dqfiqfjpoqof"), - Model("dqfiqfjpoqof") - ]; + // final List _dataList = [ + // Model("青椒皮蛋鸡尾酒哦普佛椒皮鸡尾酒哦普佛椒皮鸡尾鸡尾酒哦普佛椒皮鸡尾鸡尾酒哦普佛椒皮鸡尾鸡尾酒哦普佛椒皮鸡尾鸡尾酒哦普佛"), + // Model("dqfiqfjpoqo阿迪王期待期待五千多强大f"), + // Model("dqfiqfjpoqof"), + // Model("dqfiqfjpoqof") + // ]; + + List listDates = []; + + @override + void initState() { + // TODO: implement initState + super.initState(); + + switch(widget.type ){ + case 1://隐患排查 + _getRiskPointsList(); + break; + case 2://标准排查 + _getInspectionItemList(); + break; + + } + } + + + Future _getRiskPointsList() async { + try { + + final result = await ApiService.getRiskPointsList(widget.id); + if (result['result'] == 'success') { + final List newList = result['varList'] ?? []; + setState(() { + listDates.addAll(newList); + }); + + }else{ + ToastUtil.showNormal(context, "加载数据失败"); + // _showMessage('加载数据失败'); + } + } catch (e) { + // 出错时可以 Toast 或者在页面上显示错误状态 + print('加载数据失败:$e'); + } + } + + Future _getInspectionItemList() async { + try { + + final result = await ApiService.getInspectionItemList(widget.id); + if (result['result'] == 'success') { + final List newList = result['varList'] ?? []; + setState(() { + listDates.addAll(newList); + }); + + }else{ + ToastUtil.showNormal(context, "加载数据失败"); + // _showMessage('加载数据失败'); + } + } catch (e) { + // 出错时可以 Toast 或者在页面上显示错误状态 + print('加载数据失败:$e'); + } + } + + @override Widget build(BuildContext context) { return Scaffold( backgroundColor: h_backGroundColor(), appBar: MyAppbar( - title: "风险点(单元)列表", + title: widget.type==1?"风险点(单元)列表":"检查项目列表", actions: [ TextButton( onPressed: () { @@ -42,11 +109,13 @@ class _riskListPageState extends State { body: SafeArea( child: Column( children: [ - Expanded(child: ListView.separated( - itemCount: _dataList.length, + Expanded(child: listDates.isEmpty + ? NoDataWidget.show() + : ListView.separated( + itemCount: listDates.length, separatorBuilder: (_, __) => const SizedBox(), itemBuilder: (context, index) { - Model item = _dataList[index]; + final item = listDates[index]; return GestureDetector( onTap: () => _selectItem(item), child: _itemCell(item), @@ -69,7 +138,7 @@ class _riskListPageState extends State { ); } - Widget _itemCell(Model item) { + Widget _itemCell(final item) { return Padding(padding: EdgeInsets.symmetric(vertical: 7, horizontal: 15), child: GestureDetector( onTap: () => _selectItem(item), @@ -84,15 +153,25 @@ class _riskListPageState extends State { mainAxisAlignment: MainAxisAlignment.start, children: [ Image.asset("assets/images/zt-ing.png", width: 70, height: 70,), - const SizedBox(width: 10), // 添加间距 - Expanded( // 修复3: 文本过长时自动换行 - child: Text( - item.title, - style: const TextStyle(fontSize: 16), - maxLines: 2, // 限制两行 - overflow: TextOverflow.ellipsis, - ), - ), + const SizedBox(width: 10), // 添加间距 + Column( + children: [ + Expanded( // 修复3: 文本过长时自动换行 + child: + Center(child: + Text( + _getTitle(item), + // item.title, + style: const TextStyle(fontSize: 16), + maxLines: 2, // 限制两行 + overflow: TextOverflow.ellipsis, + ), + ), + + ), + ], + ) + ], ), ), @@ -100,17 +179,53 @@ class _riskListPageState extends State { ); } + String _getTitle(final item) { + if(widget.type==1 ){ + return "${item["DEPT_NAME"]}--${item["RISKUNITNAME"]}--${item["PARTSNAME"]}\n所属电子围栏:${item["ELECTRONIC_FENCE_NAME"]}"; + }else{ + return item["DICTIONARY_NAMES"]; + } + } + void _nextHandle() { } - void _selectItem(Model Item) { - pushPage(DangerProjectPage(), context); + void _selectItem(final item) { + switch(widget.type ){ + case 1://隐患排查 + _isInElectronicFence(item); + break; + case 2://标准排查 + pushPage(DangerProjectPage(item), context); + break; + + } + } + + Future _isInElectronicFence(final item ) async { + try { + + final result = await ApiService.isInElectronicFence(item["ELECTRONIC_FENCE_ID"]); + if (result['result'] == 'success') { + + setState(() { + // listDates.addAll(newList); + }); + + }else{ + ToastUtil.showNormal(context, result['msg']); + // _showMessage('加载数据失败'); + } + } catch (e) { + // 出错时可以 Toast 或者在页面上显示错误状态 + print('加载数据失败:$e'); + + } + } + + } -class Model { - final String title; - Model(this.title); -} diff --git a/pubspec.lock b/pubspec.lock index 923cda2..2d5944a 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -6,7 +6,7 @@ packages: description: name: args sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.7.0" asn1lib: @@ -14,7 +14,7 @@ packages: description: name: asn1lib sha256: "9a8f69025044eb466b9b60ef3bc3ac99b4dc6c158ae9c56d25eeccf5bc56d024" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.6.5" async: @@ -22,7 +22,7 @@ packages: description: name: async sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.13.0" boolean_selector: @@ -30,7 +30,7 @@ packages: description: name: boolean_selector sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.2" camera: @@ -38,7 +38,7 @@ packages: description: name: camera sha256: d6ec2cbdbe2fa8f5e0d07d8c06368fe4effa985a4a5ddade9cc58a8cd849557d - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.11.2" camera_android_camerax: @@ -46,7 +46,7 @@ packages: description: name: camera_android_camerax sha256: "58b8fe843a3c83fd1273c00cb35f5a8ae507f6cc9b2029bcf7e2abba499e28d8" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.6.19+1" camera_avfoundation: @@ -54,7 +54,7 @@ packages: description: name: camera_avfoundation sha256: "04e1f052ef268085a4f0550389211cc46005a9af015e444c7b1ee7aa19332e5d" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.9.20+6" camera_platform_interface: @@ -62,7 +62,7 @@ packages: description: name: camera_platform_interface sha256: "2f757024a48696ff4814a789b0bd90f5660c0fb25f393ab4564fb483327930e2" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.10.0" camera_web: @@ -70,7 +70,7 @@ packages: description: name: camera_web sha256: "595f28c89d1fb62d77c73c633193755b781c6d2e0ebcd8dc25b763b514e6ba8f" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.3.5" characters: @@ -78,7 +78,7 @@ packages: description: name: characters sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.4.0" clock: @@ -86,7 +86,7 @@ packages: description: name: clock sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.2" collection: @@ -94,7 +94,7 @@ packages: description: name: collection sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.19.1" connectivity_plus: @@ -102,7 +102,7 @@ packages: description: name: connectivity_plus sha256: "051849e2bd7c7b3bc5844ea0d096609ddc3a859890ec3a9ac4a65a2620cc1f99" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "6.1.4" connectivity_plus_platform_interface: @@ -110,7 +110,7 @@ packages: description: name: connectivity_plus_platform_interface sha256: "42657c1715d48b167930d5f34d00222ac100475f73d10162ddf43e714932f204" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.1" convert: @@ -118,7 +118,7 @@ packages: description: name: convert sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "3.1.2" cross_file: @@ -126,7 +126,7 @@ packages: description: name: cross_file sha256: "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.3.4+2" crypto: @@ -134,7 +134,7 @@ packages: description: name: crypto sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.6" csslib: @@ -142,7 +142,7 @@ packages: description: name: csslib sha256: "09bad715f418841f976c77db72d5398dc1253c21fb9c0c7f0b0b985860b2d58e" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.2" cupertino_icons: @@ -150,7 +150,7 @@ packages: description: name: cupertino_icons sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.8" dbus: @@ -158,7 +158,7 @@ packages: description: name: dbus sha256: "79e0c23480ff85dc68de79e2cd6334add97e48f7f4865d17686dd6ea81a47e8c" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.7.11" dio: @@ -166,7 +166,7 @@ packages: description: name: dio sha256: "253a18bbd4851fecba42f7343a1df3a9a4c1d31a2c1b37e221086b4fa8c8dbc9" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "5.8.0+1" dio_web_adapter: @@ -174,7 +174,7 @@ packages: description: name: dio_web_adapter sha256: "7586e476d70caecaf1686d21eee7247ea43ef5c345eab9e0cc3583ff13378d78" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.1" dotted_line: @@ -182,7 +182,7 @@ packages: description: name: dotted_line sha256: "41e3d655939559815daa1370fc1e07673a205fa628cf40ce3af45d90029a77b6" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "3.2.3" encrypt: @@ -190,7 +190,7 @@ packages: description: name: encrypt sha256: "62d9aa4670cc2a8798bab89b39fc71b6dfbacf615de6cf5001fb39f7e4a996a2" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "5.0.3" extended_image: @@ -198,7 +198,7 @@ packages: description: name: extended_image sha256: f6cbb1d798f51262ed1a3d93b4f1f2aa0d76128df39af18ecb77fa740f88b2e0 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "10.0.1" extended_image_library: @@ -206,7 +206,7 @@ packages: description: name: extended_image_library sha256: "1f9a24d3a00c2633891c6a7b5cab2807999eb2d5b597e5133b63f49d113811fe" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "5.0.1" extension: @@ -214,7 +214,7 @@ packages: description: name: extension sha256: be3a6b7f8adad2f6e2e8c63c895d19811fcf203e23466c6296267941d0ff4f24 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.6.0" fake_async: @@ -222,7 +222,7 @@ packages: description: name: fake_async sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.3.3" ffi: @@ -230,7 +230,7 @@ packages: description: name: ffi sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.4" file: @@ -238,7 +238,7 @@ packages: description: name: file sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "7.0.1" file_selector_linux: @@ -246,7 +246,7 @@ packages: description: name: file_selector_linux sha256: "54cbbd957e1156d29548c7d9b9ec0c0ebb6de0a90452198683a7d23aed617a33" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.9.3+2" file_selector_macos: @@ -254,7 +254,7 @@ packages: description: name: file_selector_macos sha256: "8c9250b2bd2d8d4268e39c82543bacbaca0fda7d29e0728c3c4bbb7c820fd711" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.9.4+3" file_selector_platform_interface: @@ -262,7 +262,7 @@ packages: description: name: file_selector_platform_interface sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.6.2" file_selector_windows: @@ -270,7 +270,7 @@ packages: description: name: file_selector_windows sha256: "320fcfb6f33caa90f0b58380489fc5ac05d99ee94b61aa96ec2bff0ba81d3c2b" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.9.3+4" fixnum: @@ -278,7 +278,7 @@ packages: description: name: fixnum sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.1" flutter: @@ -291,7 +291,7 @@ packages: description: name: flutter_html sha256: "38a2fd702ffdf3243fb7441ab58aa1bc7e6922d95a50db76534de8260638558d" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.0" flutter_lints: @@ -299,7 +299,7 @@ packages: description: name: flutter_lints sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "5.0.0" flutter_plugin_android_lifecycle: @@ -307,7 +307,7 @@ packages: description: name: flutter_plugin_android_lifecycle sha256: f948e346c12f8d5480d2825e03de228d0eb8c3a737e4cdaa122267b89c022b5e - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.28" flutter_test: @@ -325,7 +325,7 @@ packages: description: name: fluttertoast sha256: "25e51620424d92d3db3832464774a6143b5053f15e382d8ffbfd40b6e795dcf1" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "8.2.12" geolocator: @@ -333,7 +333,7 @@ packages: description: name: geolocator sha256: f4efb8d3c4cdcad2e226af9661eb1a0dd38c71a9494b22526f9da80ab79520e5 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "10.1.1" geolocator_android: @@ -341,7 +341,7 @@ packages: description: name: geolocator_android sha256: fcb1760a50d7500deca37c9a666785c047139b5f9ee15aa5469fae7dbbe3170d - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "4.6.2" geolocator_apple: @@ -349,7 +349,7 @@ packages: description: name: geolocator_apple sha256: dbdd8789d5aaf14cf69f74d4925ad1336b4433a6efdf2fce91e8955dc921bf22 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.3.13" geolocator_platform_interface: @@ -357,7 +357,7 @@ packages: description: name: geolocator_platform_interface sha256: "30cb64f0b9adcc0fb36f628b4ebf4f731a2961a0ebd849f4b56200205056fe67" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "4.2.6" geolocator_web: @@ -365,7 +365,7 @@ packages: description: name: geolocator_web sha256: "102e7da05b48ca6bf0a5bda0010f886b171d1a08059f01bfe02addd0175ebece" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.2.1" geolocator_windows: @@ -373,7 +373,7 @@ packages: description: name: geolocator_windows sha256: "175435404d20278ffd220de83c2ca293b73db95eafbdc8131fe8609be1421eb6" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.2.5" html: @@ -381,7 +381,7 @@ packages: description: name: html sha256: "6d1264f2dffa1b1101c25a91dff0dc2daee4c18e87cd8538729773c073dbf602" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.15.6" http: @@ -389,7 +389,7 @@ packages: description: name: http sha256: "2c11f3f94c687ee9bad77c171151672986360b2b001d109814ee7140b2cf261b" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.4.0" http_client_helper: @@ -397,7 +397,7 @@ packages: description: name: http_client_helper sha256: "8a9127650734da86b5c73760de2b404494c968a3fd55602045ffec789dac3cb1" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.0" http_parser: @@ -405,7 +405,7 @@ packages: description: name: http_parser sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "4.1.2" image_picker: @@ -413,7 +413,7 @@ packages: description: name: image_picker sha256: "021834d9c0c3de46bf0fe40341fa07168407f694d9b2bb18d532dc1261867f7a" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.2" image_picker_android: @@ -421,7 +421,7 @@ packages: description: name: image_picker_android sha256: "6fae381e6af2bbe0365a5e4ce1db3959462fa0c4d234facf070746024bb80c8d" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.8.12+24" image_picker_for_web: @@ -429,7 +429,7 @@ packages: description: name: image_picker_for_web sha256: "717eb042ab08c40767684327be06a5d8dbb341fe791d514e4b92c7bbe1b7bb83" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.6" image_picker_ios: @@ -437,7 +437,7 @@ packages: description: name: image_picker_ios sha256: "05da758e67bc7839e886b3959848aa6b44ff123ab4b28f67891008afe8ef9100" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.8.12+2" image_picker_linux: @@ -445,7 +445,7 @@ packages: description: name: image_picker_linux sha256: "34a65f6740df08bbbeb0a1abd8e6d32107941fd4868f67a507b25601651022c9" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.2.1+2" image_picker_macos: @@ -453,7 +453,7 @@ packages: description: name: image_picker_macos sha256: "1b90ebbd9dcf98fb6c1d01427e49a55bd96b5d67b8c67cf955d60a5de74207c1" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.2.1+2" image_picker_platform_interface: @@ -461,7 +461,7 @@ packages: description: name: image_picker_platform_interface sha256: "886d57f0be73c4b140004e78b9f28a8914a09e50c2d816bdd0520051a71236a0" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.10.1" image_picker_windows: @@ -469,7 +469,7 @@ packages: description: name: image_picker_windows sha256: "6ad07afc4eb1bc25f3a01084d28520496c4a3bb0cb13685435838167c9dcedeb" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.2.1+1" intl: @@ -477,7 +477,7 @@ packages: description: name: intl sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.20.2" js: @@ -485,7 +485,7 @@ packages: description: name: js sha256: "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.7.2" leak_tracker: @@ -493,7 +493,7 @@ packages: description: name: leak_tracker sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "10.0.9" leak_tracker_flutter_testing: @@ -501,7 +501,7 @@ packages: description: name: leak_tracker_flutter_testing sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.9" leak_tracker_testing: @@ -509,7 +509,7 @@ packages: description: name: leak_tracker_testing sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.1" lints: @@ -517,7 +517,7 @@ packages: description: name: lints sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "5.1.1" list_counter: @@ -525,7 +525,7 @@ packages: description: name: list_counter sha256: c447ae3dfcd1c55f0152867090e67e219d42fe6d4f2807db4bbe8b8d69912237 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.2" matcher: @@ -533,7 +533,7 @@ packages: description: name: matcher sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.12.17" material_color_utilities: @@ -541,7 +541,7 @@ packages: description: name: material_color_utilities sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.11.1" meta: @@ -549,7 +549,7 @@ packages: description: name: meta sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.16.0" mime: @@ -557,7 +557,7 @@ packages: description: name: mime sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.0" mobile_scanner: @@ -565,7 +565,7 @@ packages: description: name: mobile_scanner sha256: "54005bdea7052d792d35b4fef0f84ec5ddc3a844b250ecd48dc192fb9b4ebc95" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "7.0.1" ndef_record: @@ -573,7 +573,7 @@ packages: description: name: ndef_record sha256: "0c72dfac0d5c16fc264846d103ee5d8249cd3858261a5a537b455a24c1bd5857" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.2.1" nested: @@ -581,7 +581,7 @@ packages: description: name: nested sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.0" nfc_manager: @@ -589,7 +589,7 @@ packages: description: name: nfc_manager sha256: "164cc0223dee528d4d05a542da921f0b3a31ca0312400701c93ebf4ce757f676" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "4.0.2" nfc_manager_ndef: @@ -597,7 +597,7 @@ packages: description: name: nfc_manager_ndef sha256: "676e741c42b63ab1fda5a981015cb706ab4fdb76e5d0eec6611993bb27d7e7bf" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.1" nm: @@ -605,7 +605,7 @@ packages: description: name: nm sha256: "2c9aae4127bdc8993206464fcc063611e0e36e72018696cd9631023a31b24254" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.5.0" package_info_plus: @@ -613,7 +613,7 @@ packages: description: name: package_info_plus sha256: "7976bfe4c583170d6cdc7077e3237560b364149fcd268b5f53d95a991963b191" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "8.3.0" package_info_plus_platform_interface: @@ -621,7 +621,7 @@ packages: description: name: package_info_plus_platform_interface sha256: "6c935fb612dff8e3cc9632c2b301720c77450a126114126ffaafe28d2e87956c" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "3.2.0" path: @@ -629,7 +629,7 @@ packages: description: name: path sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.9.1" path_provider: @@ -637,7 +637,7 @@ packages: description: name: path_provider sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.5" path_provider_android: @@ -645,7 +645,7 @@ packages: description: name: path_provider_android sha256: d0d310befe2c8ab9e7f393288ccbb11b60c019c6b5afc21973eeee4dda2b35e9 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.2.17" path_provider_foundation: @@ -653,7 +653,7 @@ packages: description: name: path_provider_foundation sha256: "4843174df4d288f5e29185bd6e72a6fbdf5a4a4602717eed565497429f179942" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.4.1" path_provider_linux: @@ -661,7 +661,7 @@ packages: description: name: path_provider_linux sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.2.1" path_provider_platform_interface: @@ -669,7 +669,7 @@ packages: description: name: path_provider_platform_interface sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.2" path_provider_windows: @@ -677,7 +677,7 @@ packages: description: name: path_provider_windows sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.3.0" pdfx: @@ -685,7 +685,7 @@ packages: description: name: pdfx sha256: "29db9b71d46bf2335e001f91693f2c3fbbf0760e4c2eb596bf4bafab211471c1" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.9.2" petitparser: @@ -693,7 +693,7 @@ packages: description: name: petitparser sha256: "07c8f0b1913bcde1ff0d26e57ace2f3012ccbf2b204e070290dad3bb22797646" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "6.1.0" photo_manager: @@ -701,7 +701,7 @@ packages: description: name: photo_manager sha256: a0d9a7a9bc35eda02d33766412bde6d883a8b0acb86bbe37dac5f691a0894e8a - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "3.7.1" photo_manager_image_provider: @@ -709,7 +709,7 @@ packages: description: name: photo_manager_image_provider sha256: b6015b67b32f345f57cf32c126f871bced2501236c405aafaefa885f7c821e4f - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.2.0" photo_view: @@ -717,7 +717,7 @@ packages: description: name: photo_view sha256: "1fc3d970a91295fbd1364296575f854c9863f225505c28c46e0a03e48960c75e" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.15.0" platform: @@ -725,7 +725,7 @@ packages: description: name: platform sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "3.1.6" plugin_platform_interface: @@ -733,7 +733,7 @@ packages: description: name: plugin_platform_interface sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.8" pointycastle: @@ -741,7 +741,7 @@ packages: description: name: pointycastle sha256: "4be0097fcf3fd3e8449e53730c631200ebc7b88016acecab2b0da2f0149222fe" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "3.9.1" provider: @@ -749,7 +749,7 @@ packages: description: name: provider sha256: "4abbd070a04e9ddc287673bf5a030c7ca8b685ff70218720abab8b092f53dd84" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "6.1.5" shared_preferences: @@ -757,7 +757,7 @@ packages: description: name: shared_preferences sha256: "6e8bf70b7fef813df4e9a36f658ac46d107db4b4cfe1048b477d4e453a8159f5" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.5.3" shared_preferences_android: @@ -765,7 +765,7 @@ packages: description: name: shared_preferences_android sha256: "20cbd561f743a342c76c151d6ddb93a9ce6005751e7aa458baad3858bfbfb6ac" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.4.10" shared_preferences_foundation: @@ -773,7 +773,7 @@ packages: description: name: shared_preferences_foundation sha256: "6a52cfcdaeac77cad8c97b539ff688ccfc458c007b4db12be584fbe5c0e49e03" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.5.4" shared_preferences_linux: @@ -781,7 +781,7 @@ packages: description: name: shared_preferences_linux sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.4.1" shared_preferences_platform_interface: @@ -789,7 +789,7 @@ packages: description: name: shared_preferences_platform_interface sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.4.1" shared_preferences_web: @@ -797,7 +797,7 @@ packages: description: name: shared_preferences_web sha256: c49bd060261c9a3f0ff445892695d6212ff603ef3115edbb448509d407600019 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.4.3" shared_preferences_windows: @@ -805,7 +805,7 @@ packages: description: name: shared_preferences_windows sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.4.1" simple_gesture_detector: @@ -813,7 +813,7 @@ packages: description: name: simple_gesture_detector sha256: ba2cd5af24ff20a0b8d609cec3f40e5b0744d2a71804a2616ae086b9c19d19a3 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.2.1" sky_engine: @@ -826,7 +826,7 @@ packages: description: name: source_span sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.10.1" sprintf: @@ -834,7 +834,7 @@ packages: description: name: sprintf sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "7.0.0" stack_trace: @@ -842,7 +842,7 @@ packages: description: name: stack_trace sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.12.1" stream_channel: @@ -850,7 +850,7 @@ packages: description: name: stream_channel sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.4" stream_transform: @@ -858,7 +858,7 @@ packages: description: name: stream_transform sha256: ad47125e588cfd37a9a7f86c7d6356dde8dfe89d071d293f80ca9e9273a33871 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.1" string_scanner: @@ -866,7 +866,7 @@ packages: description: name: string_scanner sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.4.1" synchronized: @@ -874,7 +874,7 @@ packages: description: name: synchronized sha256: c254ade258ec8282947a0acbbc90b9575b4f19673533ee46f2f6e9b3aeefd7c0 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "3.4.0" table_calendar: @@ -882,7 +882,7 @@ packages: description: name: table_calendar sha256: "0c0c6219878b363a2d5f40c7afb159d845f253d061dc3c822aa0d5fe0f721982" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "3.2.0" term_glyph: @@ -890,7 +890,7 @@ packages: description: name: term_glyph sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.2.2" test_api: @@ -898,7 +898,7 @@ packages: description: name: test_api sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.7.4" typed_data: @@ -906,7 +906,7 @@ packages: description: name: typed_data sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.4.0" universal_platform: @@ -914,7 +914,7 @@ packages: description: name: universal_platform sha256: "64e16458a0ea9b99260ceb5467a214c1f298d647c659af1bff6d3bf82536b1ec" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.0" url_launcher: @@ -922,7 +922,7 @@ packages: description: name: url_launcher sha256: f6a7e5c4835bb4e3026a04793a4199ca2d14c739ec378fdfe23fc8075d0439f8 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "6.3.2" url_launcher_android: @@ -930,7 +930,7 @@ packages: description: name: url_launcher_android sha256: "8582d7f6fe14d2652b4c45c9b6c14c0b678c2af2d083a11b604caeba51930d79" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "6.3.16" url_launcher_ios: @@ -938,7 +938,7 @@ packages: description: name: url_launcher_ios sha256: "7f2022359d4c099eea7df3fdf739f7d3d3b9faf3166fb1dd390775176e0b76cb" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "6.3.3" url_launcher_linux: @@ -946,7 +946,7 @@ packages: description: name: url_launcher_linux sha256: "4e9ba368772369e3e08f231d2301b4ef72b9ff87c31192ef471b380ef29a4935" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "3.2.1" url_launcher_macos: @@ -954,7 +954,7 @@ packages: description: name: url_launcher_macos sha256: "17ba2000b847f334f16626a574c702b196723af2a289e7a93ffcb79acff855c2" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "3.2.2" url_launcher_platform_interface: @@ -962,7 +962,7 @@ packages: description: name: url_launcher_platform_interface sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.3.2" url_launcher_web: @@ -970,7 +970,7 @@ packages: description: name: url_launcher_web sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.4.1" url_launcher_windows: @@ -978,7 +978,7 @@ packages: description: name: url_launcher_windows sha256: "3284b6d2ac454cf34f114e1d3319866fdd1e19cdc329999057e44ffe936cfa77" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "3.1.4" uuid: @@ -986,7 +986,7 @@ packages: description: name: uuid sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "4.5.1" vector_math: @@ -994,7 +994,7 @@ packages: description: name: vector_math sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.4" video_player: @@ -1002,7 +1002,7 @@ packages: description: name: video_player sha256: "0d55b1f1a31e5ad4c4967bfaa8ade0240b07d20ee4af1dfef5f531056512961a" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.10.0" video_player_android: @@ -1010,7 +1010,7 @@ packages: description: name: video_player_android sha256: "0fabf59eea728a6a887f29f2818eafbefb4b37c727dbb62dccef56c9287a692f" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.8.10" video_player_avfoundation: @@ -1018,7 +1018,7 @@ packages: description: name: video_player_avfoundation sha256: d716c279c940b5b4625da6bae625e88540d4150a8f3390f961454245e9848675 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.8.1" video_player_platform_interface: @@ -1026,7 +1026,7 @@ packages: description: name: video_player_platform_interface sha256: cf2a1d29a284db648fd66cbd18aacc157f9862d77d2cc790f6f9678a46c1db5a - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "6.4.0" video_player_web: @@ -1034,7 +1034,7 @@ packages: description: name: video_player_web sha256: "9f3c00be2ef9b76a95d94ac5119fb843dca6f2c69e6c9968f6f2b6c9e7afbdeb" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.4.0" visibility_detector: @@ -1042,7 +1042,7 @@ packages: description: name: visibility_detector sha256: dd5cc11e13494f432d15939c3aa8ae76844c42b723398643ce9addb88a5ed420 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.4.0+2" vm_service: @@ -1050,7 +1050,7 @@ packages: description: name: vm_service sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "15.0.0" web: @@ -1058,7 +1058,7 @@ packages: description: name: web sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.1" webview_flutter: @@ -1066,7 +1066,7 @@ packages: description: name: webview_flutter sha256: c3e4fe614b1c814950ad07186007eff2f2e5dd2935eba7b9a9a1af8e5885f1ba - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "4.13.0" webview_flutter_android: @@ -1074,7 +1074,7 @@ packages: description: name: webview_flutter_android sha256: "9573ad97890d199ac3ab32399aa33a5412163b37feb573eb5b0a76b35e9ffe41" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "4.8.2" webview_flutter_platform_interface: @@ -1082,7 +1082,7 @@ packages: description: name: webview_flutter_platform_interface sha256: f0dc2dc3a2b1e3a6abdd6801b9355ebfeb3b8f6cde6b9dc7c9235909c4a1f147 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.13.1" webview_flutter_wkwebview: @@ -1090,7 +1090,7 @@ packages: description: name: webview_flutter_wkwebview sha256: "71523b9048cf510cfa1fd4e0a3fa5e476a66e0884d5df51d59d5023dba237107" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "3.22.1" wechat_assets_picker: @@ -1098,7 +1098,7 @@ packages: description: name: wechat_assets_picker sha256: cafe3d32564ed3cacf9822f251941f7b44fe9885c17c8de4fca7e939a459e1ef - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "9.5.1" wechat_picker_library: @@ -1106,7 +1106,7 @@ packages: description: name: wechat_picker_library sha256: a42e09cb85b15fc9410f6a69671371cc60aa99c4a1f7967f6593a7f665f6f47a - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.5" win32: @@ -1114,7 +1114,7 @@ packages: description: name: win32 sha256: "66814138c3562338d05613a6e368ed8cfb237ad6d64a9e9334be3f309acfca03" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "5.14.0" xdg_directories: @@ -1122,7 +1122,7 @@ packages: description: name: xdg_directories sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.0" xml: @@ -1130,7 +1130,7 @@ packages: description: name: xml sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "6.5.0" sdks: