Showing
16 changed files
with
533 additions
and
241 deletions
assets/arr_right_gray.png
0 → 100644
230 Bytes
assets/bg_error.png
0 → 100644
32.9 KB
| @@ -25,6 +25,8 @@ PODS: | @@ -25,6 +25,8 @@ PODS: | ||
| 25 | - jpush_flutter (0.0.2): | 25 | - jpush_flutter (0.0.2): |
| 26 | - Flutter | 26 | - Flutter |
| 27 | - JPush | 27 | - JPush |
| 28 | + - package_info (0.0.1): | ||
| 29 | + - Flutter | ||
| 28 | - path_provider (0.0.1): | 30 | - path_provider (0.0.1): |
| 29 | - Flutter | 31 | - Flutter |
| 30 | - path_provider_macos (0.0.1): | 32 | - path_provider_macos (0.0.1): |
| @@ -59,6 +61,7 @@ DEPENDENCIES: | @@ -59,6 +61,7 @@ DEPENDENCIES: | ||
| 59 | - fluwx (from `.symlinks/plugins/fluwx/ios`) | 61 | - fluwx (from `.symlinks/plugins/fluwx/ios`) |
| 60 | - install_plugin (from `.symlinks/plugins/install_plugin/ios`) | 62 | - install_plugin (from `.symlinks/plugins/install_plugin/ios`) |
| 61 | - jpush_flutter (from `.symlinks/plugins/jpush_flutter/ios`) | 63 | - jpush_flutter (from `.symlinks/plugins/jpush_flutter/ios`) |
| 64 | + - package_info (from `.symlinks/plugins/package_info/ios`) | ||
| 62 | - path_provider (from `.symlinks/plugins/path_provider/ios`) | 65 | - path_provider (from `.symlinks/plugins/path_provider/ios`) |
| 63 | - path_provider_macos (from `.symlinks/plugins/path_provider_macos/ios`) | 66 | - path_provider_macos (from `.symlinks/plugins/path_provider_macos/ios`) |
| 64 | - permission_handler (from `.symlinks/plugins/permission_handler/ios`) | 67 | - permission_handler (from `.symlinks/plugins/permission_handler/ios`) |
| @@ -97,6 +100,8 @@ EXTERNAL SOURCES: | @@ -97,6 +100,8 @@ EXTERNAL SOURCES: | ||
| 97 | :path: ".symlinks/plugins/install_plugin/ios" | 100 | :path: ".symlinks/plugins/install_plugin/ios" |
| 98 | jpush_flutter: | 101 | jpush_flutter: |
| 99 | :path: ".symlinks/plugins/jpush_flutter/ios" | 102 | :path: ".symlinks/plugins/jpush_flutter/ios" |
| 103 | + package_info: | ||
| 104 | + :path: ".symlinks/plugins/package_info/ios" | ||
| 100 | path_provider: | 105 | path_provider: |
| 101 | :path: ".symlinks/plugins/path_provider/ios" | 106 | :path: ".symlinks/plugins/path_provider/ios" |
| 102 | path_provider_macos: | 107 | path_provider_macos: |
| @@ -131,6 +136,7 @@ SPEC CHECKSUMS: | @@ -131,6 +136,7 @@ SPEC CHECKSUMS: | ||
| 131 | JCore: d75c0306dc99875d323d23e5a063b3a3ef22335a | 136 | JCore: d75c0306dc99875d323d23e5a063b3a3ef22335a |
| 132 | JPush: 9468c84a3809dc3ac2fc1c89c6d1d6c858a91bf5 | 137 | JPush: 9468c84a3809dc3ac2fc1c89c6d1d6c858a91bf5 |
| 133 | jpush_flutter: 69133df35eaf9135e540549b154d992c44f8ee44 | 138 | jpush_flutter: 69133df35eaf9135e540549b154d992c44f8ee44 |
| 139 | + package_info: 873975fc26034f0b863a300ad47e7f1ac6c7ec62 | ||
| 134 | path_provider: fb74bd0465e96b594bb3b5088ee4a4e7bb1f2a9d | 140 | path_provider: fb74bd0465e96b594bb3b5088ee4a4e7bb1f2a9d |
| 135 | path_provider_macos: f760a3c5b04357c380e2fddb6f9db6f3015897e0 | 141 | path_provider_macos: f760a3c5b04357c380e2fddb6f9db6f3015897e0 |
| 136 | permission_handler: f615215121f43c1640d2b8500d4ad749512828a8 | 142 | permission_handler: f615215121f43c1640d2b8500d4ad749512828a8 |
| @@ -159,164 +159,169 @@ class HandleOnlinePageState extends State<HandleOnlinePage> { | @@ -159,164 +159,169 @@ class HandleOnlinePageState extends State<HandleOnlinePage> { | ||
| 159 | Expanded( | 159 | Expanded( |
| 160 | child: DefaultTextStyle(style: TextStyle(decoration: TextDecoration.none), child: Container( | 160 | child: DefaultTextStyle(style: TextStyle(decoration: TextDecoration.none), child: Container( |
| 161 | color: MyColours.color_ffffff, | 161 | color: MyColours.color_ffffff, |
| 162 | - child: SingleChildScrollView( | ||
| 163 | - child: Container( | ||
| 164 | - color: MyColours.color_ffffff, | ||
| 165 | - padding: | ||
| 166 | - EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(43)), | ||
| 167 | - child: Column( | ||
| 168 | - children: <Widget>[ | ||
| 169 | - RowMultiText("用餐时段", detailEntity.ddateMd), | ||
| 170 | - Stack( | ||
| 171 | - alignment: Alignment.center, | 162 | + child: Column( |
| 163 | + children: <Widget>[ | ||
| 164 | + SingleChildScrollView( | ||
| 165 | + child: Container( | ||
| 166 | + color: MyColours.color_ffffff, | ||
| 167 | + padding: | ||
| 168 | + EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(43)), | ||
| 169 | + child: Column( | ||
| 172 | children: <Widget>[ | 170 | children: <Widget>[ |
| 173 | - Column( | 171 | + RowMultiText("用餐时段", detailEntity.ddateMd), |
| 172 | + Stack( | ||
| 173 | + alignment: Alignment.center, | ||
| 174 | children: <Widget>[ | 174 | children: <Widget>[ |
| 175 | - RowMultiText("用餐时间", detailEntity.ddateHm), | ||
| 176 | - Offstage( | ||
| 177 | - offstage: detailEntity.type=="0"?false:true, | ||
| 178 | - child: RowMultiText("用餐人数", detailEntity.pnum), | ||
| 179 | - ) | 175 | + Column( |
| 176 | + children: <Widget>[ | ||
| 177 | + RowMultiText("用餐时间", detailEntity.ddateHm), | ||
| 178 | + Offstage( | ||
| 179 | + offstage: detailEntity.type=="0"?false:true, | ||
| 180 | + child: RowMultiText("用餐人数", detailEntity.pnum), | ||
| 181 | + ) | ||
| 182 | + ], | ||
| 183 | + ), | ||
| 184 | + Image.asset(detailEntity.statuImgAssets,width: ScreenUtil().setWidth(100),height: ScreenUtil().setWidth(30),) | ||
| 180 | ], | 185 | ], |
| 181 | ), | 186 | ), |
| 182 | - Image.asset(detailEntity.statuImgAssets,width: ScreenUtil().setWidth(100),height: ScreenUtil().setWidth(30),) | ||
| 183 | - ], | ||
| 184 | - ), | ||
| 185 | - RowMultiText("包间需求", (detailEntity.demands.length.toString()+"个")??""), | ||
| 186 | - Align( | ||
| 187 | - alignment: Alignment.centerRight, | ||
| 188 | - child: Offstage( | ||
| 189 | - offstage: detailEntity.demands.length>0?false:true, | ||
| 190 | - child: Container( | ||
| 191 | - height: ScreenUtil().setHeight(210), | ||
| 192 | - child: ListView.builder(itemBuilder: (BuildContext contxt,int index){ | ||
| 193 | - return NeedItem(detailEntity.demands[index]); | ||
| 194 | - },itemCount: detailEntity.demands.length,shrinkWrap: true,scrollDirection: Axis.horizontal,), | ||
| 195 | - ), | ||
| 196 | - ) | ||
| 197 | - ), | ||
| 198 | - RowMultiText("客户姓名", detailEntity.rnameStr), | ||
| 199 | - RowMultiText("客户电话", detailEntity.phone), | ||
| 200 | - MyDivider(double.infinity, ScreenUtil().setHeight(1)), | ||
| 201 | - Container( | ||
| 202 | - color: MyColours.color_ffffff, | ||
| 203 | - width: double.infinity, | ||
| 204 | - height: ScreenUtil().setHeight(80), | ||
| 205 | - alignment: Alignment.center, | ||
| 206 | - child: Stack( | ||
| 207 | - alignment: Alignment.center, | ||
| 208 | - children: <Widget>[ | ||
| 209 | - Positioned( | ||
| 210 | - left: 0, | ||
| 211 | - child: Text( | ||
| 212 | - "客户经理", | ||
| 213 | - style: TextStyle( | ||
| 214 | - color: MyColours.color_828282, | ||
| 215 | - fontSize: ScreenUtil().setSp(30)), | ||
| 216 | - ), | ||
| 217 | - ), | ||
| 218 | - Positioned( | ||
| 219 | - right: 0, | ||
| 220 | - child: GestureDetector( | ||
| 221 | - onTap: () async { | ||
| 222 | - List<String> list=[]; | ||
| 223 | - for(Manager manager in managers){ | ||
| 224 | - list.add(manager.roleUserName); | ||
| 225 | - } | ||
| 226 | - DialogUtil.showSelectCusmanDialog(context,list).then((value){ | ||
| 227 | - setState(() { | ||
| 228 | - cusmanText=managers[value.first].userName; | ||
| 229 | - }); | ||
| 230 | - _setCurrManager(); | ||
| 231 | - }); | ||
| 232 | - }, | ||
| 233 | - child: Text( | ||
| 234 | - cusmanText, | ||
| 235 | - style: TextStyle( | ||
| 236 | - color: MyColours.color_353535, | ||
| 237 | - fontSize: ScreenUtil().setSp(30), | ||
| 238 | - decoration: TextDecoration.underline, | 187 | + RowMultiText("包间需求", (detailEntity.demands.length.toString()+"个")??""), |
| 188 | + Align( | ||
| 189 | + alignment: Alignment.centerRight, | ||
| 190 | + child: Offstage( | ||
| 191 | + offstage: detailEntity.demands.length>0?false:true, | ||
| 192 | + child: Container( | ||
| 193 | + height: ScreenUtil().setHeight(210), | ||
| 194 | + child: ListView.builder(itemBuilder: (BuildContext contxt,int index){ | ||
| 195 | + return NeedItem(detailEntity.demands[index]); | ||
| 196 | + },itemCount: detailEntity.demands.length,shrinkWrap: true,scrollDirection: Axis.horizontal,), | ||
| 197 | + ), | ||
| 198 | + ) | ||
| 199 | + ), | ||
| 200 | + RowMultiText("客户姓名", detailEntity.rnameStr), | ||
| 201 | + RowMultiText("客户电话", detailEntity.phone), | ||
| 202 | + RowMultiText("备注信息",detailEntity.cusdem??""), | ||
| 203 | + MyDivider(double.infinity, ScreenUtil().setHeight(1)), | ||
| 204 | + Container( | ||
| 205 | + color: MyColours.color_ffffff, | ||
| 206 | + width: double.infinity, | ||
| 207 | + height: ScreenUtil().setHeight(80), | ||
| 208 | + alignment: Alignment.center, | ||
| 209 | + child: Stack( | ||
| 210 | + alignment: Alignment.center, | ||
| 211 | + children: <Widget>[ | ||
| 212 | + Positioned( | ||
| 213 | + left: 0, | ||
| 214 | + child: Text( | ||
| 215 | + "客户经理", | ||
| 216 | + style: TextStyle( | ||
| 217 | + color: MyColours.color_828282, | ||
| 218 | + fontSize: ScreenUtil().setSp(30)), | ||
| 239 | ), | 219 | ), |
| 240 | ), | 220 | ), |
| 241 | - ), | ||
| 242 | - ) | ||
| 243 | - ], | ||
| 244 | - ), | 221 | + Positioned( |
| 222 | + right: 0, | ||
| 223 | + child: GestureDetector( | ||
| 224 | + onTap: () async { | ||
| 225 | + List<String> list=[]; | ||
| 226 | + for(Manager manager in managers){ | ||
| 227 | + list.add(manager.roleUserName); | ||
| 228 | + } | ||
| 229 | + DialogUtil.showSelectCusmanDialog(context,list).then((value){ | ||
| 230 | + setState(() { | ||
| 231 | + cusmanText=managers[value.first].userName; | ||
| 232 | + }); | ||
| 233 | + _setCurrManager(); | ||
| 234 | + }); | ||
| 235 | + }, | ||
| 236 | + child: Text( | ||
| 237 | + cusmanText, | ||
| 238 | + style: TextStyle( | ||
| 239 | + color: MyColours.color_353535, | ||
| 240 | + fontSize: ScreenUtil().setSp(30), | ||
| 241 | + decoration: TextDecoration.underline, | ||
| 242 | + ), | ||
| 243 | + ), | ||
| 244 | + ), | ||
| 245 | + ) | ||
| 246 | + ], | ||
| 247 | + ), | ||
| 248 | + ), | ||
| 249 | + ], | ||
| 250 | + )), | ||
| 251 | + ), | ||
| 252 | + Container( | ||
| 253 | + margin: EdgeInsets.only(top: ScreenUtil().setHeight(30),bottom: ScreenUtil().setHeight(30)), | ||
| 254 | + child: Column( | ||
| 255 | + children: <Widget>[ | ||
| 256 | + CommonButton( | ||
| 257 | + content: "安排包间", | ||
| 258 | + width: 669, | ||
| 259 | + height: 76, | ||
| 260 | + fontSize: 34, | ||
| 261 | + onPress: () async { | ||
| 262 | + String tid=await NavigatorUtil.goSelectTablePage(context,widget.rid,int.parse(detailEntity.ddate)*1000,detailEntity.ddate_solt); | ||
| 263 | + if(tid!=null){ | ||
| 264 | + setReserveStatus("5",tid:tid); | ||
| 265 | + } | ||
| 266 | + }, | ||
| 245 | ), | 267 | ), |
| 268 | + VEmptyView(20), | ||
| 246 | Container( | 269 | Container( |
| 247 | - margin: EdgeInsets.only(top: ScreenUtil().setHeight(206)), | ||
| 248 | - child: Column( | 270 | + width: ScreenUtil().setWidth(669), |
| 271 | + height: ScreenUtil().setHeight(76), | ||
| 272 | + decoration: BoxDecoration( | ||
| 273 | + border: Border.all(color: MyColours.color_199095), | ||
| 274 | + borderRadius: BorderRadius.circular( | ||
| 275 | + ScreenUtil().setWidth(5)), | ||
| 276 | + ), | ||
| 277 | + child: Row( | ||
| 278 | + crossAxisAlignment: CrossAxisAlignment.center, | ||
| 249 | children: <Widget>[ | 279 | children: <Widget>[ |
| 250 | - CommonButton( | ||
| 251 | - content: "安排包间", | ||
| 252 | - width: 669, | ||
| 253 | - height: 76, | ||
| 254 | - fontSize: 34, | ||
| 255 | - onPress: () async { | ||
| 256 | - String tid=await NavigatorUtil.goSelectTablePage(context,widget.rid,int.parse(detailEntity.ddate)*1000,detailEntity.ddate_solt); | ||
| 257 | - if(tid!=null){ | ||
| 258 | - setReserveStatus("5",tid:tid); | ||
| 259 | - } | ||
| 260 | - }, | 280 | + Expanded( |
| 281 | + child: GestureDetector( | ||
| 282 | + child: Center( | ||
| 283 | + child: Text( | ||
| 284 | + "拒绝订单", | ||
| 285 | + style: TextStyle( | ||
| 286 | + color: MyColours.color_199095, | ||
| 287 | + fontSize: ScreenUtil().setSp(34)), | ||
| 288 | + ), | ||
| 289 | + ), | ||
| 290 | + onTap: () { | ||
| 291 | + _showRefuseDialog(); | ||
| 292 | + }, | ||
| 293 | + )), | ||
| 294 | + MyDivider( | ||
| 295 | + ScreenUtil().setWidth(2), | ||
| 296 | + ScreenUtil().setHeight(52), | ||
| 297 | + color: MyColours.color_199095, | ||
| 261 | ), | 298 | ), |
| 262 | - VEmptyView(20), | ||
| 263 | - Container( | ||
| 264 | - width: ScreenUtil().setWidth(669), | ||
| 265 | - height: ScreenUtil().setHeight(76), | ||
| 266 | - decoration: BoxDecoration( | ||
| 267 | - border: Border.all(color: MyColours.color_199095), | ||
| 268 | - borderRadius: BorderRadius.circular( | ||
| 269 | - ScreenUtil().setWidth(5)), | ||
| 270 | - ), | ||
| 271 | - child: Row( | ||
| 272 | - crossAxisAlignment: CrossAxisAlignment.center, | ||
| 273 | - children: <Widget>[ | ||
| 274 | - Expanded( | ||
| 275 | - child: GestureDetector( | ||
| 276 | - child: Center( | ||
| 277 | - child: Text( | ||
| 278 | - "拒绝订单", | ||
| 279 | - style: TextStyle( | ||
| 280 | - color: MyColours.color_199095, | ||
| 281 | - fontSize: ScreenUtil().setSp(34)), | ||
| 282 | - ), | ||
| 283 | - ), | ||
| 284 | - onTap: () { | ||
| 285 | - _showRefuseDialog(); | ||
| 286 | - }, | ||
| 287 | - )), | ||
| 288 | - MyDivider( | ||
| 289 | - ScreenUtil().setWidth(2), | ||
| 290 | - ScreenUtil().setHeight(52), | ||
| 291 | - color: MyColours.color_199095, | 299 | + Expanded( |
| 300 | + child: GestureDetector( | ||
| 301 | + child: Center( | ||
| 302 | + child: Text( | ||
| 303 | + "联系顾客", | ||
| 304 | + style: TextStyle( | ||
| 305 | + color: MyColours.color_199095, | ||
| 306 | + fontSize: ScreenUtil().setSp(34)), | ||
| 307 | + ), | ||
| 292 | ), | 308 | ), |
| 293 | - Expanded( | ||
| 294 | - child: GestureDetector( | ||
| 295 | - child: Center( | ||
| 296 | - child: Text( | ||
| 297 | - "联系顾客", | ||
| 298 | - style: TextStyle( | ||
| 299 | - color: MyColours.color_199095, | ||
| 300 | - fontSize: ScreenUtil().setSp(34)), | ||
| 301 | - ), | ||
| 302 | - ), | ||
| 303 | - onTap: () { | ||
| 304 | - if(detailEntity.phone!=null&&detailEntity.phone.isNotEmpty){ | ||
| 305 | - Utils.goPhone(detailEntity.phone); | ||
| 306 | - }else{ | ||
| 307 | - Utils.showToast("没有客户电话!"); | ||
| 308 | - } | ||
| 309 | - }, | ||
| 310 | - )), | ||
| 311 | - ], | ||
| 312 | - ), | ||
| 313 | - ) | 309 | + onTap: () { |
| 310 | + if(detailEntity.phone!=null&&detailEntity.phone.isNotEmpty){ | ||
| 311 | + Utils.goPhone(detailEntity.phone); | ||
| 312 | + }else{ | ||
| 313 | + Utils.showToast("没有客户电话!"); | ||
| 314 | + } | ||
| 315 | + }, | ||
| 316 | + )), | ||
| 314 | ], | 317 | ], |
| 315 | ), | 318 | ), |
| 316 | ) | 319 | ) |
| 317 | ], | 320 | ], |
| 318 | - )), | ||
| 319 | - ), | 321 | + ), |
| 322 | + ) | ||
| 323 | + ], | ||
| 324 | + ) | ||
| 320 | )), | 325 | )), |
| 321 | ) | 326 | ) |
| 322 | ], | 327 | ], |
| @@ -90,7 +90,7 @@ class NotebookDetailPageState extends State<NotebookDetailPage> { | @@ -90,7 +90,7 @@ class NotebookDetailPageState extends State<NotebookDetailPage> { | ||
| 90 | showBack: true, | 90 | showBack: true, |
| 91 | ), | 91 | ), |
| 92 | Expanded( | 92 | Expanded( |
| 93 | - child: DefaultTextStyle(style: TextStyle(decoration: TextDecoration.none), overflow:TextOverflow.ellipsis,child: Container( | 93 | + child: DefaultTextStyle(style: TextStyle(decoration: TextDecoration.none),child: Container( |
| 94 | color: MyColours.color_ffffff, | 94 | color: MyColours.color_ffffff, |
| 95 | child: SingleChildScrollView( | 95 | child: SingleChildScrollView( |
| 96 | child: Container( | 96 | child: Container( |
| @@ -149,7 +149,8 @@ class NotebookDetailPageState extends State<NotebookDetailPage> { | @@ -149,7 +149,8 @@ class NotebookDetailPageState extends State<NotebookDetailPage> { | ||
| 149 | ) | 149 | ) |
| 150 | ), | 150 | ), |
| 151 | RowMultiText("客户姓名", detailEntity.rnameStr), | 151 | RowMultiText("客户姓名", detailEntity.rnameStr), |
| 152 | - RowMultiText("客户电话", detailEntity.phone), | 152 | + RowMultiText("客户电话", detailEntity.phone??""), |
| 153 | + RowMultiText("备注信息",detailEntity.cusdem??""), | ||
| 153 | MyDivider(double.infinity, ScreenUtil().setHeight(1)), | 154 | MyDivider(double.infinity, ScreenUtil().setHeight(1)), |
| 154 | Container( | 155 | Container( |
| 155 | color: MyColours.color_ffffff, | 156 | color: MyColours.color_ffffff, |
| 1 | import 'package:flutter/material.dart'; | 1 | import 'package:flutter/material.dart'; |
| 2 | import 'package:flutter_screenutil/flutter_screenutil.dart'; | 2 | import 'package:flutter_screenutil/flutter_screenutil.dart'; |
| 3 | +import 'package:one_key/provider/update_model.dart'; | ||
| 3 | import 'package:one_key/provider/user_model.dart'; | 4 | import 'package:one_key/provider/user_model.dart'; |
| 4 | import 'package:one_key/res/colors.dart'; | 5 | import 'package:one_key/res/colors.dart'; |
| 6 | +import 'package:one_key/utils/utils.dart'; | ||
| 7 | +import 'package:one_key/widgets/MyDivider.dart'; | ||
| 5 | import 'package:one_key/widgets/app_bar.dart'; | 8 | import 'package:one_key/widgets/app_bar.dart'; |
| 6 | import 'package:one_key/widgets/h_empty_view.dart'; | 9 | import 'package:one_key/widgets/h_empty_view.dart'; |
| 10 | +import 'package:one_key/widgets/my_item.dart'; | ||
| 7 | import 'package:one_key/widgets/v_empty_view.dart'; | 11 | import 'package:one_key/widgets/v_empty_view.dart'; |
| 8 | import 'package:provider/provider.dart'; | 12 | import 'package:provider/provider.dart'; |
| 9 | 13 | ||
| @@ -16,6 +20,26 @@ class MyPage extends StatefulWidget{ | @@ -16,6 +20,26 @@ class MyPage extends StatefulWidget{ | ||
| 16 | } | 20 | } |
| 17 | 21 | ||
| 18 | class MyPageState extends State<MyPage>{ | 22 | class MyPageState extends State<MyPage>{ |
| 23 | + | ||
| 24 | + String cur_version=""; | ||
| 25 | + | ||
| 26 | + @override | ||
| 27 | + void initState() { | ||
| 28 | + // TODO: implement initState | ||
| 29 | + super.initState(); | ||
| 30 | + Utils.getCurrVersion().then((version){ | ||
| 31 | + setState(() { | ||
| 32 | + cur_version="v"+version; | ||
| 33 | + }); | ||
| 34 | + }); | ||
| 35 | + } | ||
| 36 | + | ||
| 37 | + //检查版本更新 | ||
| 38 | + checkUpdate(){ | ||
| 39 | + UpdateModel updateModel=new UpdateModel(); | ||
| 40 | + updateModel.checkUpdate(context); | ||
| 41 | + } | ||
| 42 | + | ||
| 19 | @override | 43 | @override |
| 20 | Widget build(BuildContext context) { | 44 | Widget build(BuildContext context) { |
| 21 | // TODO: implement build | 45 | // TODO: implement build |
| @@ -28,39 +52,60 @@ class MyPageState extends State<MyPage>{ | @@ -28,39 +52,60 @@ class MyPageState extends State<MyPage>{ | ||
| 28 | MyAppBar("我的",showBack: false,backgroundColor: MyColours.color_2bb5b7,fontColor: MyColours.color_fefefe,), | 52 | MyAppBar("我的",showBack: false,backgroundColor: MyColours.color_2bb5b7,fontColor: MyColours.color_fefefe,), |
| 29 | Container( | 53 | Container( |
| 30 | width: double.infinity, | 54 | width: double.infinity, |
| 31 | - height: ScreenUtil().setHeight(396), | ||
| 32 | - decoration: BoxDecoration( | ||
| 33 | - color: MyColours.color_2bb5b7, | ||
| 34 | - boxShadow: [BoxShadow(color: MyColours.color_2e000000,offset: Offset(.0,2.0))], | ||
| 35 | - borderRadius: BorderRadius.only(bottomLeft: Radius.circular(ScreenUtil().setWidth(350)),bottomRight: Radius.circular(ScreenUtil().setWidth(350))) | ||
| 36 | - ), | 55 | + height: ScreenUtil().setHeight(242), |
| 56 | + alignment: Alignment.centerLeft, | ||
| 57 | + padding: EdgeInsets.only(left: ScreenUtil().setWidth(40)), | ||
| 58 | + color: MyColours.color_2bb5b7, | ||
| 37 | child: Consumer<UserModel>(builder: (BuildContext context,UserModel model,Widget child){ | 59 | child: Consumer<UserModel>(builder: (BuildContext context,UserModel model,Widget child){ |
| 38 | return Column( | 60 | return Column( |
| 39 | - crossAxisAlignment: CrossAxisAlignment.center, | 61 | + crossAxisAlignment: CrossAxisAlignment.start, |
| 40 | children: <Widget>[ | 62 | children: <Widget>[ |
| 41 | - VEmptyView(25), | ||
| 42 | - Image.asset("assets/my_logo.png",width: ScreenUtil().setWidth(228),height: ScreenUtil().setWidth(228),), | ||
| 43 | - VEmptyView(40), | ||
| 44 | - Text(model.user.sellername,style: TextStyle(color: MyColours.color_ffffff,fontSize: ScreenUtil().setSp(32)),), | ||
| 45 | - VEmptyView(12), | ||
| 46 | - Text(model.user.account+" | "+model.user.role_name,style: TextStyle(color: MyColours.color_ffffff,fontSize: ScreenUtil().setSp(30)),) | 63 | + VEmptyView(38), |
| 64 | + Text(model.user.sellername,style: TextStyle(color: MyColours.color_ffffff,fontSize: ScreenUtil().setSp(36)),), | ||
| 65 | + VEmptyView(38), | ||
| 66 | + Text(model.user.account+" | "+model.user.role_name,style: TextStyle(color: MyColours.color_ffffff,fontSize: ScreenUtil().setSp(30)),), | ||
| 47 | ], | 67 | ], |
| 48 | ); | 68 | ); |
| 49 | },) | 69 | },) |
| 50 | ), | 70 | ), |
| 71 | + VEmptyView(44), | ||
| 72 | + MyItem(title:"联系客服",content:"09:00~21:00",callback: (){ | ||
| 73 | + Utils.goPhone("400-000-9690"); | ||
| 74 | + },), | ||
| 75 | + MyDivider(double.infinity,ScreenUtil().setHeight(1),color: MyColours.color_f3f3f3,), | ||
| 76 | + MyItem(title:"帮助与反馈",content:"",callback: (){ | ||
| 77 | + Utils.goHelp(); | ||
| 78 | + },), | ||
| 79 | + MyDivider(double.infinity,ScreenUtil().setHeight(1),color: MyColours.color_f3f3f3), | ||
| 80 | + GestureDetector( | ||
| 81 | + onTap: checkUpdate, | ||
| 82 | + child: Container( | ||
| 83 | + width: double.infinity, | ||
| 84 | + height: ScreenUtil().setHeight(122), | ||
| 85 | + color: MyColours.color_ffffff, | ||
| 86 | + padding: EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(40)), | ||
| 87 | + alignment: Alignment.center, | ||
| 88 | + child: Row( | ||
| 89 | + children: <Widget>[ | ||
| 90 | + Text("版本更新",style: TextStyle(fontSize: ScreenUtil().setSp(30),color: MyColours.color_353535),), | ||
| 91 | + Spacer(), | ||
| 92 | + Text(cur_version,style: TextStyle(fontSize: ScreenUtil().setSp(28),color: MyColours.color_666666),), | ||
| 93 | + HEmptyView(20), | ||
| 94 | + Image.asset("assets/arr_right_gray.png",width: ScreenUtil().setWidth(14),height: ScreenUtil().setWidth(22),) | ||
| 95 | + ], | ||
| 96 | + ), | ||
| 97 | + ), | ||
| 98 | + ), | ||
| 99 | + MyDivider(double.infinity,ScreenUtil().setHeight(1),color: MyColours.color_f3f3f3,), | ||
| 100 | + VEmptyView(40), | ||
| 51 | Consumer<UserModel>(builder: (BuildContext context,UserModel model,Widget child){ | 101 | Consumer<UserModel>(builder: (BuildContext context,UserModel model,Widget child){ |
| 52 | return GestureDetector( | 102 | return GestureDetector( |
| 53 | onTap: (){ | 103 | onTap: (){ |
| 54 | - model.loginOut(context, {"seller_code":model.user.sellercode,"account":model.user.account}); | 104 | + model.showLoginOutDialog(context); |
| 55 | }, | 105 | }, |
| 56 | child: Container( | 106 | child: Container( |
| 57 | - height: ScreenUtil().setHeight(106), | ||
| 58 | - margin: EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(20),vertical: ScreenUtil().setHeight(40)), | ||
| 59 | - decoration: BoxDecoration( | ||
| 60 | - color: MyColours.color_ffffff, | ||
| 61 | - borderRadius: BorderRadius.all(Radius.circular(ScreenUtil().setWidth(8))), | ||
| 62 | - boxShadow: [BoxShadow(color: MyColours.color_14000000,offset: Offset(.0, 1.0))] | ||
| 63 | - ), | 107 | + height: ScreenUtil().setHeight(122), |
| 108 | + color: MyColours.color_ffffff, | ||
| 64 | child: Center( | 109 | child: Center( |
| 65 | child: Row( | 110 | child: Row( |
| 66 | mainAxisSize: MainAxisSize.min, | 111 | mainAxisSize: MainAxisSize.min, |
| @@ -68,7 +113,7 @@ class MyPageState extends State<MyPage>{ | @@ -68,7 +113,7 @@ class MyPageState extends State<MyPage>{ | ||
| 68 | children: <Widget>[ | 113 | children: <Widget>[ |
| 69 | Image.asset("assets/icon_exist.png",width: ScreenUtil().setWidth(30),height: ScreenUtil().setWidth(30),), | 114 | Image.asset("assets/icon_exist.png",width: ScreenUtil().setWidth(30),height: ScreenUtil().setWidth(30),), |
| 70 | HEmptyView(18), | 115 | HEmptyView(18), |
| 71 | - Text("退出登录",style: TextStyle(color: MyColours.color_353535,fontSize: ScreenUtil().setSp(34),)) | 116 | + Text("退出登录",style: TextStyle(color: MyColours.color_2bb5b7,fontSize: ScreenUtil().setSp(34),)) |
| 72 | ], | 117 | ], |
| 73 | ), | 118 | ), |
| 74 | ), | 119 | ), |
| 1 | - | ||
| 2 | import 'dart:io'; | 1 | import 'dart:io'; |
| 3 | import 'dart:math'; | 2 | import 'dart:math'; |
| 4 | 3 | ||
| @@ -8,101 +7,176 @@ import 'package:install_plugin/install_plugin.dart'; | @@ -8,101 +7,176 @@ import 'package:install_plugin/install_plugin.dart'; | ||
| 8 | import 'package:one_key/models/version.dart'; | 7 | import 'package:one_key/models/version.dart'; |
| 9 | import 'package:one_key/net/dio_util.dart'; | 8 | import 'package:one_key/net/dio_util.dart'; |
| 10 | import 'package:one_key/res/colors.dart'; | 9 | import 'package:one_key/res/colors.dart'; |
| 10 | +import 'package:one_key/widgets/MyDivider.dart'; | ||
| 11 | +import 'package:one_key/widgets/v_empty_view.dart'; | ||
| 11 | import 'package:path_provider/path_provider.dart'; | 12 | import 'package:path_provider/path_provider.dart'; |
| 12 | import 'package:permission_handler/permission_handler.dart'; | 13 | import 'package:permission_handler/permission_handler.dart'; |
| 13 | 14 | ||
| 14 | -class UpdateModel{ | ||
| 15 | - | ||
| 16 | - int _progress;//下载进度 | 15 | +class UpdateModel { |
| 16 | + int _progress; //下载进度 | ||
| 17 | Function _setState; | 17 | Function _setState; |
| 18 | //检查更新 | 18 | //检查更新 |
| 19 | - Future<Version> checkUpdate(BuildContext context){ | ||
| 20 | - Future.delayed(new Duration(milliseconds: 1000),(){ | ||
| 21 | - if(Random().nextInt(10)>0){ | ||
| 22 | - Version version=Version.fromJson({ | ||
| 23 | - "version":"v1.0.3", | ||
| 24 | - "file_url":"http://xt03.colorcun.com/uploads/20191105/67e38355c41528b24a97e9ac71a221ea.apk", | ||
| 25 | - "content":"1.bug修复;\n2.功能更新;" | 19 | + checkUpdate(BuildContext context) { |
| 20 | + Future.delayed(new Duration(milliseconds: 1000), () { | ||
| 21 | + if (Random().nextInt(10) > 0) { | ||
| 22 | + Version version = Version.fromJson({ | ||
| 23 | + "version": "v1.0.3", | ||
| 24 | + "file_url": | ||
| 25 | + "http://xt03.colorcun.com/uploads/20191105/67e38355c41528b24a97e9ac71a221ea.apk", | ||
| 26 | + "content": "1.bug修复;\n2.功能更新;" | ||
| 26 | }); | 27 | }); |
| 27 | showUpdateDialog(context, version); | 28 | showUpdateDialog(context, version); |
| 28 | } | 29 | } |
| 29 | }); | 30 | }); |
| 30 | } | 31 | } |
| 31 | 32 | ||
| 32 | - //拒绝订单弹框 | ||
| 33 | - showUpdateDialog(BuildContext context,Version version){ | ||
| 34 | - showDialog(context: context,builder: (context){ | ||
| 35 | - return AlertDialog( | ||
| 36 | - title: Text("版本更新${version.version}"), | ||
| 37 | - titleTextStyle: TextStyle(color: MyColours.color_353535,fontSize: ScreenUtil().setSp(32)), | ||
| 38 | - content: Text("${version.content}"), | ||
| 39 | - contentTextStyle:TextStyle(color: MyColours.color_828282,fontSize: ScreenUtil().setSp(28)), | ||
| 40 | - actions: <Widget>[ | ||
| 41 | - FlatButton( | ||
| 42 | - child: Text("取消",style: TextStyle(fontSize: ScreenUtil().setSp(32)),), | ||
| 43 | - onPressed: (){ | ||
| 44 | - Navigator.of(context).pop(); | ||
| 45 | - }, | ||
| 46 | - ), | ||
| 47 | - FlatButton( | ||
| 48 | - child: Text("去更新",style: TextStyle(fontSize: ScreenUtil().setSp(32)),), | ||
| 49 | - onPressed: () async { | ||
| 50 | - Navigator.of(context).pop(); | ||
| 51 | - if(Platform.isAndroid){ | ||
| 52 | - downloadApk(context,version.file_url); | ||
| 53 | - }else{ | ||
| 54 | - InstallPlugin.gotoAppStore("itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=1510697490"); | ||
| 55 | - } | ||
| 56 | - }, | ||
| 57 | - ) | ||
| 58 | - ], | ||
| 59 | - ); | ||
| 60 | - }); | 33 | + //版本更新弹框 |
| 34 | + showUpdateDialog(BuildContext context, Version version) { | ||
| 35 | + showDialog( | ||
| 36 | + context: context, | ||
| 37 | + builder: (context) { | ||
| 38 | + Widget widget = Container( | ||
| 39 | + decoration: BoxDecoration( | ||
| 40 | + color: MyColours.color_ffffff, | ||
| 41 | + borderRadius: BorderRadius.all( | ||
| 42 | + Radius.circular(ScreenUtil().setWidth(30)))), | ||
| 43 | + padding: EdgeInsets.only(top: ScreenUtil().setWidth(50)), | ||
| 44 | + child: Column( | ||
| 45 | + mainAxisSize: MainAxisSize.min, | ||
| 46 | + crossAxisAlignment: CrossAxisAlignment.start, | ||
| 47 | + children: <Widget>[ | ||
| 48 | + Container( | ||
| 49 | + padding: EdgeInsets.symmetric( | ||
| 50 | + horizontal: ScreenUtil().setWidth(60)), | ||
| 51 | + child: Column( | ||
| 52 | + mainAxisSize: MainAxisSize.min, | ||
| 53 | + crossAxisAlignment: CrossAxisAlignment.start, | ||
| 54 | + children: <Widget>[ | ||
| 55 | + Center( | ||
| 56 | + child: Text( | ||
| 57 | + "${version.version}版本更新啦", | ||
| 58 | + style: TextStyle( | ||
| 59 | + fontSize: ScreenUtil().setSp(36), | ||
| 60 | + color: MyColours.color_353535), | ||
| 61 | + ), | ||
| 62 | + ), | ||
| 63 | + VEmptyView(20), | ||
| 64 | + Text( | ||
| 65 | + version.content, | ||
| 66 | + style: TextStyle( | ||
| 67 | + fontSize: ScreenUtil().setSp(28), | ||
| 68 | + color: MyColours.color_353535), | ||
| 69 | + ) | ||
| 70 | + ], | ||
| 71 | + ), | ||
| 72 | + ), | ||
| 73 | + VEmptyView(40), | ||
| 74 | + MyDivider(double.infinity, ScreenUtil().setWidth(1)), | ||
| 75 | + Container( | ||
| 76 | + height: ScreenUtil().setWidth(94), | ||
| 77 | + child: Row( | ||
| 78 | + children: <Widget>[ | ||
| 79 | + Expanded( | ||
| 80 | + child: GestureDetector( | ||
| 81 | + onTap: () { | ||
| 82 | + Navigator.of(context).pop(); | ||
| 83 | + }, | ||
| 84 | + child: Text( | ||
| 85 | + "下次一定", | ||
| 86 | + style: TextStyle( | ||
| 87 | + fontSize: ScreenUtil().setSp(34), | ||
| 88 | + color: MyColours.color_777777), | ||
| 89 | + textAlign: TextAlign.center, | ||
| 90 | + ), | ||
| 91 | + ), | ||
| 92 | + ), | ||
| 93 | + MyDivider(ScreenUtil().setWidth(1),ScreenUtil().setWidth(94)), | ||
| 94 | + Expanded( | ||
| 95 | + child: GestureDetector( | ||
| 96 | + onTap: () { | ||
| 97 | + Navigator.of(context).pop(); | ||
| 98 | + if (Platform.isAndroid) { | ||
| 99 | + downloadApk(context, version.file_url); | ||
| 100 | + } else { | ||
| 101 | + InstallPlugin.gotoAppStore( | ||
| 102 | + "itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=1510697490"); | ||
| 103 | + } | ||
| 104 | + }, | ||
| 105 | + child: Text( | ||
| 106 | + "立即更新", | ||
| 107 | + style: TextStyle( | ||
| 108 | + fontSize: ScreenUtil().setSp(34), | ||
| 109 | + color: MyColours.color_2bb5b7), | ||
| 110 | + textAlign: TextAlign.center, | ||
| 111 | + ), | ||
| 112 | + ), | ||
| 113 | + ) | ||
| 114 | + ], | ||
| 115 | + ), | ||
| 116 | + ) | ||
| 117 | + ], | ||
| 118 | + ), | ||
| 119 | + ); | ||
| 120 | + return Center(child: UnconstrainedBox( | ||
| 121 | + constrainedAxis: Axis.vertical, | ||
| 122 | + child: ConstrainedBox( | ||
| 123 | + constraints: BoxConstraints(maxWidth: ScreenUtil().setWidth(560)), | ||
| 124 | + child: DefaultTextStyle( | ||
| 125 | + style: TextStyle(decoration: TextDecoration.none), | ||
| 126 | + child: widget, | ||
| 127 | + ) | ||
| 128 | + ), | ||
| 129 | + ),); | ||
| 130 | + return AlertDialog( | ||
| 131 | + content: widget, | ||
| 132 | + contentPadding: EdgeInsets.zero, | ||
| 133 | + ); | ||
| 134 | + }); | ||
| 61 | } | 135 | } |
| 62 | 136 | ||
| 63 | //下载更新版本 | 137 | //下载更新版本 |
| 64 | - Future<void> downloadApk(BuildContext context,String file_url) async { | 138 | + Future<void> downloadApk(BuildContext context, String file_url) async { |
| 65 | Map<PermissionGroup, PermissionStatus> permissions = | 139 | Map<PermissionGroup, PermissionStatus> permissions = |
| 66 | - await PermissionHandler().requestPermissions([PermissionGroup.storage]); | ||
| 67 | - if(permissions[PermissionGroup.storage] == PermissionStatus.granted){ | ||
| 68 | - final dir=await getExternalStorageDirectory(); | ||
| 69 | - String savePath=dir.path+"/one_key"; | ||
| 70 | - DioUtil().download(file_url, savePath,onProgress: (received,total){ | ||
| 71 | - int progress=((received/total)*100).round(); | ||
| 72 | - _progress=progress; | ||
| 73 | - _setState((){}); | ||
| 74 | - if(received==total){//下载完成 | ||
| 75 | - InstallPlugin.installApk(savePath,"com.naji.one_key"); | 140 | + await PermissionHandler().requestPermissions([PermissionGroup.storage]); |
| 141 | + if (permissions[PermissionGroup.storage] == PermissionStatus.granted) { | ||
| 142 | + final dir = await getExternalStorageDirectory(); | ||
| 143 | + String savePath = dir.path + "/one_key"; | ||
| 144 | + DioUtil().download(file_url, savePath, onProgress: (received, total) { | ||
| 145 | + int progress = ((received / total) * 100).round(); | ||
| 146 | + _progress = progress; | ||
| 147 | + _setState(() {}); | ||
| 148 | + if (received == total) { | ||
| 149 | + //下载完成 | ||
| 150 | + InstallPlugin.installApk(savePath, "com.naji.one_key"); | ||
| 76 | } | 151 | } |
| 77 | }); | 152 | }); |
| 78 | } | 153 | } |
| 79 | } | 154 | } |
| 80 | 155 | ||
| 81 | //显示下载进度条 | 156 | //显示下载进度条 |
| 82 | - Function showDownloadProgress(BuildContext context){ | 157 | + Function showDownloadProgress(BuildContext context) { |
| 83 | showDialog( | 158 | showDialog( |
| 84 | context: context, | 159 | context: context, |
| 85 | barrierDismissible: false, | 160 | barrierDismissible: false, |
| 86 | builder: (context) { | 161 | builder: (context) { |
| 87 | return AlertDialog( | 162 | return AlertDialog( |
| 88 | content: StatefulBuilder(builder: (context, setState) { | 163 | content: StatefulBuilder(builder: (context, setState) { |
| 89 | - if(_progress==100){ | ||
| 90 | - Navigator.of(context).pop(); | ||
| 91 | - | ||
| 92 | - } | ||
| 93 | - _setState=setState; | ||
| 94 | - return Column( | ||
| 95 | - mainAxisSize: MainAxisSize.min, | ||
| 96 | - children: <Widget>[ | ||
| 97 | - CircularProgressIndicator(), | ||
| 98 | - Padding( | ||
| 99 | - padding: EdgeInsets.only(top: 26), | ||
| 100 | - child: Text("正在下载...${_progress}%"), | ||
| 101 | - ) | ||
| 102 | - ], | ||
| 103 | - ); | ||
| 104 | - })); | 164 | + if (_progress == 100) { |
| 165 | + Navigator.of(context).pop(); | ||
| 166 | + } | ||
| 167 | + _setState = setState; | ||
| 168 | + return Column( | ||
| 169 | + mainAxisSize: MainAxisSize.min, | ||
| 170 | + children: <Widget>[ | ||
| 171 | + CircularProgressIndicator(), | ||
| 172 | + Padding( | ||
| 173 | + padding: EdgeInsets.only(top: 26), | ||
| 174 | + child: Text("正在下载...${_progress}%"), | ||
| 175 | + ) | ||
| 176 | + ], | ||
| 177 | + ); | ||
| 178 | + })); | ||
| 105 | }); | 179 | }); |
| 106 | return _setState; | 180 | return _setState; |
| 107 | } | 181 | } |
| 108 | -} | ||
| 182 | +} |
| 1 | import 'dart:convert'; | 1 | import 'dart:convert'; |
| 2 | 2 | ||
| 3 | import 'package:flutter/material.dart'; | 3 | import 'package:flutter/material.dart'; |
| 4 | +import 'package:flutter_screenutil/flutter_screenutil.dart'; | ||
| 4 | import 'package:jpush_flutter/jpush_flutter.dart'; | 5 | import 'package:jpush_flutter/jpush_flutter.dart'; |
| 5 | import 'package:one_key/constant/constant.dart'; | 6 | import 'package:one_key/constant/constant.dart'; |
| 6 | import 'package:one_key/models/user.dart'; | 7 | import 'package:one_key/models/user.dart'; |
| 7 | import 'package:one_key/net/base_resp.dart'; | 8 | import 'package:one_key/net/base_resp.dart'; |
| 8 | import 'package:one_key/net/dio_util.dart'; | 9 | import 'package:one_key/net/dio_util.dart'; |
| 9 | import 'package:one_key/net/http_url.dart'; | 10 | import 'package:one_key/net/http_url.dart'; |
| 11 | +import 'package:one_key/res/colors.dart'; | ||
| 10 | import 'package:one_key/utils/log_util.dart'; | 12 | import 'package:one_key/utils/log_util.dart'; |
| 11 | import 'package:one_key/utils/navigator_util.dart'; | 13 | import 'package:one_key/utils/navigator_util.dart'; |
| 12 | import 'package:one_key/utils/utils.dart'; | 14 | import 'package:one_key/utils/utils.dart'; |
| 15 | +import 'package:one_key/widgets/MyDivider.dart'; | ||
| 16 | +import 'package:one_key/widgets/v_empty_view.dart'; | ||
| 13 | 17 | ||
| 14 | import '../app.dart'; | 18 | import '../app.dart'; |
| 15 | 19 | ||
| @@ -118,6 +122,88 @@ class UserModel with ChangeNotifier { | @@ -118,6 +122,88 @@ class UserModel with ChangeNotifier { | ||
| 118 | } | 122 | } |
| 119 | } | 123 | } |
| 120 | 124 | ||
| 125 | + //版本更新弹框 | ||
| 126 | + showLoginOutDialog(BuildContext pageContext) { | ||
| 127 | + showDialog( | ||
| 128 | + context: pageContext, | ||
| 129 | + builder: (context) { | ||
| 130 | + Widget widget = Container( | ||
| 131 | + decoration: BoxDecoration( | ||
| 132 | + color: MyColours.color_ffffff, | ||
| 133 | + borderRadius: BorderRadius.all( | ||
| 134 | + Radius.circular(ScreenUtil().setWidth(30)))), | ||
| 135 | + padding: EdgeInsets.only(top: ScreenUtil().setWidth(88)), | ||
| 136 | + child: Column( | ||
| 137 | + mainAxisSize: MainAxisSize.min, | ||
| 138 | + crossAxisAlignment: CrossAxisAlignment.start, | ||
| 139 | + children: <Widget>[ | ||
| 140 | + Center( | ||
| 141 | + child: Text( | ||
| 142 | + "确定要退出登录吗?", | ||
| 143 | + style: TextStyle( | ||
| 144 | + fontSize: ScreenUtil().setSp(36), | ||
| 145 | + color: MyColours.color_353535), | ||
| 146 | + ), | ||
| 147 | + ), | ||
| 148 | + VEmptyView(66), | ||
| 149 | + MyDivider(double.infinity, ScreenUtil().setWidth(1)), | ||
| 150 | + Container( | ||
| 151 | + height: ScreenUtil().setWidth(94), | ||
| 152 | + child: Row( | ||
| 153 | + children: <Widget>[ | ||
| 154 | + Expanded( | ||
| 155 | + child: GestureDetector( | ||
| 156 | + onTap: () { | ||
| 157 | + Navigator.of(context).pop(); | ||
| 158 | + }, | ||
| 159 | + child: Text( | ||
| 160 | + "取消", | ||
| 161 | + style: TextStyle( | ||
| 162 | + fontSize: ScreenUtil().setSp(34), | ||
| 163 | + color: MyColours.color_777777), | ||
| 164 | + textAlign: TextAlign.center, | ||
| 165 | + ), | ||
| 166 | + ), | ||
| 167 | + ), | ||
| 168 | + MyDivider(ScreenUtil().setWidth(1),ScreenUtil().setWidth(94)), | ||
| 169 | + Expanded( | ||
| 170 | + child: GestureDetector( | ||
| 171 | + onTap: () { | ||
| 172 | + Navigator.of(context).pop(); | ||
| 173 | + loginOut(pageContext, {"seller_code":user.sellercode,"account":user.account}); | ||
| 174 | + }, | ||
| 175 | + child: Text( | ||
| 176 | + "确定", | ||
| 177 | + style: TextStyle( | ||
| 178 | + fontSize: ScreenUtil().setSp(34), | ||
| 179 | + color: MyColours.color_2bb5b7), | ||
| 180 | + textAlign: TextAlign.center, | ||
| 181 | + ), | ||
| 182 | + ), | ||
| 183 | + ) | ||
| 184 | + ], | ||
| 185 | + ), | ||
| 186 | + ) | ||
| 187 | + ], | ||
| 188 | + ), | ||
| 189 | + ); | ||
| 190 | + return Center(child: UnconstrainedBox( | ||
| 191 | + constrainedAxis: Axis.vertical, | ||
| 192 | + child: ConstrainedBox( | ||
| 193 | + constraints: BoxConstraints(maxWidth: ScreenUtil().setWidth(560)), | ||
| 194 | + child: DefaultTextStyle( | ||
| 195 | + style: TextStyle(decoration: TextDecoration.none), | ||
| 196 | + child: widget, | ||
| 197 | + ) | ||
| 198 | + ), | ||
| 199 | + ),); | ||
| 200 | + return AlertDialog( | ||
| 201 | + content: widget, | ||
| 202 | + contentPadding: EdgeInsets.zero, | ||
| 203 | + ); | ||
| 204 | + }); | ||
| 205 | + } | ||
| 206 | + | ||
| 121 | ///退出登录 | 207 | ///退出登录 |
| 122 | loginOut(BuildContext context, Map<String, String> params) async { | 208 | loginOut(BuildContext context, Map<String, String> params) async { |
| 123 | BaseResp<int> baseResp = await DioUtil() | 209 | BaseResp<int> baseResp = await DioUtil() |
| @@ -22,12 +22,14 @@ class MyColours { | @@ -22,12 +22,14 @@ class MyColours { | ||
| 22 | static const Color color_828282=Color(0xff828282); | 22 | static const Color color_828282=Color(0xff828282); |
| 23 | static const Color color_a8e2e4=Color(0xffA8E2E4); | 23 | static const Color color_a8e2e4=Color(0xffA8E2E4); |
| 24 | static const Color color_63a6d1=Color(0xff63A6D1); | 24 | static const Color color_63a6d1=Color(0xff63A6D1); |
| 25 | + static const Color color_666666=Color(0xff666666); | ||
| 25 | static const Color color_777777=Color(0xff777777); | 26 | static const Color color_777777=Color(0xff777777); |
| 26 | static const Color color_ea5750=Color(0xffEA5750); | 27 | static const Color color_ea5750=Color(0xffEA5750); |
| 27 | static const Color color_89c0b7=Color(0xff89C0B7); | 28 | static const Color color_89c0b7=Color(0xff89C0B7); |
| 28 | static const Color color_ededed=Color(0xffededed); | 29 | static const Color color_ededed=Color(0xffededed); |
| 29 | static const Color color_f7fdfd=Color(0xffF7FDFD); | 30 | static const Color color_f7fdfd=Color(0xffF7FDFD); |
| 30 | static const Color color_dbe3e3=Color(0xffdbe3e3); | 31 | static const Color color_dbe3e3=Color(0xffdbe3e3); |
| 32 | + static const Color color_f3f3f3=Color(0xfff3f3f3); | ||
| 31 | static const Color color_f49a5e=Color(0xffF49A5E); | 33 | static const Color color_f49a5e=Color(0xffF49A5E); |
| 32 | static const Color color_ff0000=Color(0xffff0000); | 34 | static const Color color_ff0000=Color(0xffff0000); |
| 33 | static const Color color_000000=Color(0xff000000); | 35 | static const Color color_000000=Color(0xff000000); |
| @@ -3,11 +3,8 @@ import 'dart:convert'; | @@ -3,11 +3,8 @@ import 'dart:convert'; | ||
| 3 | import 'package:flutter/material.dart'; | 3 | import 'package:flutter/material.dart'; |
| 4 | import 'package:flutter_picker/flutter_picker.dart'; | 4 | import 'package:flutter_picker/flutter_picker.dart'; |
| 5 | import 'package:flutter_screenutil/flutter_screenutil.dart'; | 5 | import 'package:flutter_screenutil/flutter_screenutil.dart'; |
| 6 | -import 'package:one_key/models/message.dart'; | ||
| 7 | -import 'package:one_key/models/notebook.dart'; | ||
| 8 | import 'package:one_key/pages/message/message_dialog_item.dart'; | 6 | import 'package:one_key/pages/message/message_dialog_item.dart'; |
| 9 | import 'package:one_key/provider/message_dialog_model.dart'; | 7 | import 'package:one_key/provider/message_dialog_model.dart'; |
| 10 | -import 'package:one_key/provider/message_model.dart'; | ||
| 11 | import 'package:one_key/res/colors.dart'; | 8 | import 'package:one_key/res/colors.dart'; |
| 12 | import 'package:one_key/utils/log_util.dart'; | 9 | import 'package:one_key/utils/log_util.dart'; |
| 13 | import 'package:one_key/utils/navigator_util.dart'; | 10 | import 'package:one_key/utils/navigator_util.dart'; |
| @@ -7,6 +7,7 @@ import 'package:fluttertoast/fluttertoast.dart'; | @@ -7,6 +7,7 @@ import 'package:fluttertoast/fluttertoast.dart'; | ||
| 7 | import 'package:flutter/services.dart'; | 7 | import 'package:flutter/services.dart'; |
| 8 | import 'package:fluwx/fluwx.dart'; | 8 | import 'package:fluwx/fluwx.dart'; |
| 9 | import 'package:one_key/utils/log_util.dart'; | 9 | import 'package:one_key/utils/log_util.dart'; |
| 10 | +import 'package:package_info/package_info.dart'; | ||
| 10 | import 'package:url_launcher/url_launcher.dart'; | 11 | import 'package:url_launcher/url_launcher.dart'; |
| 11 | 12 | ||
| 12 | class Utils { | 13 | class Utils { |
| @@ -76,6 +77,23 @@ class Utils { | @@ -76,6 +77,23 @@ class Utils { | ||
| 76 | } | 77 | } |
| 77 | } | 78 | } |
| 78 | 79 | ||
| 80 | + //跳转拨打电话页面 | ||
| 81 | + static goHelp() async { | ||
| 82 | + String url="https://support.qq.com/product/152856"; | ||
| 83 | + if(await canLaunch(url)){ | ||
| 84 | + await launch(url); | ||
| 85 | + }else{ | ||
| 86 | + LogUtil.e("Could not launch $url"); | ||
| 87 | + } | ||
| 88 | + } | ||
| 89 | + | ||
| 90 | + //获取应用版本昊 | ||
| 91 | + static Future<String> getCurrVersion() async { | ||
| 92 | + PackageInfo packageInfo=await PackageInfo.fromPlatform(); | ||
| 93 | + String version=packageInfo.version; | ||
| 94 | + return version; | ||
| 95 | + } | ||
| 96 | + | ||
| 79 | //比较两个日期是否同一天 | 97 | //比较两个日期是否同一天 |
| 80 | static isOneDay(DateTime one,DateTime two){ | 98 | static isOneDay(DateTime one,DateTime two){ |
| 81 | if(one.year==two.year&&one.month==two.month&&one.day==two.day)return true; | 99 | if(one.year==two.year&&one.month==two.month&&one.day==two.day)return true; |
lib/widgets/my_item.dart
0 → 100644
| 1 | +import 'package:flutter/material.dart'; | ||
| 2 | +import 'package:flutter_screenutil/flutter_screenutil.dart'; | ||
| 3 | +import 'package:one_key/res/colors.dart'; | ||
| 4 | +import 'package:one_key/widgets/h_empty_view.dart'; | ||
| 5 | + | ||
| 6 | +class MyItem extends StatefulWidget{ | ||
| 7 | + | ||
| 8 | + final String title; | ||
| 9 | + final String content; | ||
| 10 | + final VoidCallback callback; | ||
| 11 | + | ||
| 12 | + const MyItem({Key key, this.title, this.content, this.callback}) : super(key: key); | ||
| 13 | + | ||
| 14 | + @override | ||
| 15 | + State<StatefulWidget> createState() { | ||
| 16 | + // TODO: implement createState | ||
| 17 | + return new MyItemState(); | ||
| 18 | + } | ||
| 19 | +} | ||
| 20 | + | ||
| 21 | +class MyItemState extends State<MyItem>{ | ||
| 22 | + | ||
| 23 | + @override | ||
| 24 | + Widget build(BuildContext context) { | ||
| 25 | + // TODO: implement build | ||
| 26 | + return GestureDetector( | ||
| 27 | + onTap: widget.callback, | ||
| 28 | + child: Container( | ||
| 29 | + width: double.infinity, | ||
| 30 | + height: ScreenUtil().setHeight(122), | ||
| 31 | + color: MyColours.color_ffffff, | ||
| 32 | + padding: EdgeInsets.symmetric(horizontal: ScreenUtil().setWidth(40)), | ||
| 33 | + alignment: Alignment.center, | ||
| 34 | + child: Row( | ||
| 35 | + children: <Widget>[ | ||
| 36 | + Text(widget.title,style: TextStyle(fontSize: ScreenUtil().setSp(30),color: MyColours.color_353535),), | ||
| 37 | + Spacer(), | ||
| 38 | + Text(widget.content,style: TextStyle(fontSize: ScreenUtil().setSp(28),color: MyColours.color_666666),), | ||
| 39 | + HEmptyView(20), | ||
| 40 | + Image.asset("assets/arr_right_gray.png",width: ScreenUtil().setWidth(14),height: ScreenUtil().setWidth(22),) | ||
| 41 | + ], | ||
| 42 | + ), | ||
| 43 | + ), | ||
| 44 | + ); | ||
| 45 | + } | ||
| 46 | + | ||
| 47 | +} |
| @@ -15,7 +15,7 @@ class RowMultiText extends StatelessWidget{ | @@ -15,7 +15,7 @@ class RowMultiText extends StatelessWidget{ | ||
| 15 | return Container( | 15 | return Container( |
| 16 | color: MyColours.color_ffffff, | 16 | color: MyColours.color_ffffff, |
| 17 | width: double.infinity, | 17 | width: double.infinity, |
| 18 | - height: ScreenUtil().setHeight(80), | 18 | + padding: EdgeInsets.symmetric(vertical: ScreenUtil().setWidth(25)), |
| 19 | alignment: Alignment.center, | 19 | alignment: Alignment.center, |
| 20 | child: Row( | 20 | child: Row( |
| 21 | crossAxisAlignment: CrossAxisAlignment.center, | 21 | crossAxisAlignment: CrossAxisAlignment.center, |
| @@ -28,7 +28,7 @@ class RowMultiText extends StatelessWidget{ | @@ -28,7 +28,7 @@ class RowMultiText extends StatelessWidget{ | ||
| 28 | child: Container( | 28 | child: Container( |
| 29 | alignment: Alignment.centerRight, | 29 | alignment: Alignment.centerRight, |
| 30 | margin: EdgeInsets.only(left: ScreenUtil().setWidth(20)), | 30 | margin: EdgeInsets.only(left: ScreenUtil().setWidth(20)), |
| 31 | - child: Text(content,style: TextStyle(color: MyColours.color_353535,fontSize: ScreenUtil().setSp(30)),maxLines:1,overflow: TextOverflow.ellipsis,), | 31 | + child: Text(content,style: TextStyle(color: MyColours.color_353535,fontSize: ScreenUtil().setSp(30)),softWrap: true,textAlign: TextAlign.right,), |
| 32 | ), | 32 | ), |
| 33 | ) | 33 | ) |
| 34 | ], | 34 | ], |
| @@ -485,6 +485,13 @@ packages: | @@ -485,6 +485,13 @@ packages: | ||
| 485 | url: "https://pub.flutter-io.cn" | 485 | url: "https://pub.flutter-io.cn" |
| 486 | source: hosted | 486 | source: hosted |
| 487 | version: "1.9.2" | 487 | version: "1.9.2" |
| 488 | + package_info: | ||
| 489 | + dependency: "direct main" | ||
| 490 | + description: | ||
| 491 | + name: package_info | ||
| 492 | + url: "https://pub.flutter-io.cn" | ||
| 493 | + source: hosted | ||
| 494 | + version: "0.4.0+18" | ||
| 488 | package_resolver: | 495 | package_resolver: |
| 489 | dependency: transitive | 496 | dependency: transitive |
| 490 | description: | 497 | description: |
| @@ -75,6 +75,8 @@ dependencies: | @@ -75,6 +75,8 @@ dependencies: | ||
| 75 | # fake_push: ^0.5.4 | 75 | # fake_push: ^0.5.4 |
| 76 | # 安装apk | 76 | # 安装apk |
| 77 | install_plugin: ^2.0.1 | 77 | install_plugin: ^2.0.1 |
| 78 | +# 获取应用版本信息 | ||
| 79 | + package_info: ^0.4.0+18 | ||
| 78 | 80 | ||
| 79 | dev_dependencies: | 81 | dev_dependencies: |
| 80 | flutter_test: | 82 | flutter_test: |
| @@ -134,6 +136,8 @@ flutter: | @@ -134,6 +136,8 @@ flutter: | ||
| 134 | - assets/invication_back.png | 136 | - assets/invication_back.png |
| 135 | - assets/icon_exist.png | 137 | - assets/icon_exist.png |
| 136 | - assets/my_logo.png | 138 | - assets/my_logo.png |
| 139 | + - assets/arr_right_gray.png | ||
| 140 | + - assets/bg_error.png | ||
| 137 | 141 | ||
| 138 | # assets: | 142 | # assets: |
| 139 | # - images/a_dot_burr.jpeg | 143 | # - images/a_dot_burr.jpeg |
-
Please register or login to post a comment