heavy_end_page.dart 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. import 'dart:io';
  2. import 'package:flutter/material.dart';
  3. import 'package:image_picker/image_picker.dart';
  4. import 'package:liftmanager/net/api_service.dart';
  5. import 'package:liftmanager/routers/fluro_navigator.dart';
  6. import 'package:liftmanager/utils/theme_utils.dart';
  7. import 'package:liftmanager/utils/toast.dart';
  8. import 'package:liftmanager/widgets/app_bar.dart';
  9. import 'package:liftmanager/widgets/my_button.dart';
  10. import 'package:liftmanager/widgets/selected_image.dart';
  11. class HeavyEndPage extends StatefulWidget {
  12. HeavyEndPage(this.projectId);
  13. final String projectId;
  14. @override
  15. State<StatefulWidget> createState() {
  16. return HeavyEndState();
  17. }
  18. }
  19. class HeavyEndState extends State<HeavyEndPage> {
  20. List<File> images = [];
  21. ///合格证
  22. _saveFinish() {
  23. if(images.length == 0){
  24. toasts("请上传竣工单");
  25. return;
  26. }
  27. showLoading(context, "正在提交...");
  28. ///上传保养图片
  29. ApiService(context: context).uploadMore(images, onSuccess: (imgs) {
  30. ///提交
  31. ApiService(context: context).capitalCompleted(widget.projectId,imgs,onSuccess: (res){
  32. dismissLoading(context);
  33. if(res!=null){
  34. NavigatorUtils.goBack(context);
  35. }
  36. },onError: (code,msg){
  37. });
  38. }, onError: (code, msg) {
  39. dismissLoading(context);
  40. toasts(msg);
  41. });
  42. }
  43. ///选择图片
  44. void selectPicker() {
  45. showDialog(
  46. context: context,
  47. builder: (BuildContext context) {
  48. return SimpleDialog(
  49. title: Text("选择方式"),
  50. children: ["拍照", '从手机相册选择'].map((String value) {
  51. print("$value");
  52. return SimpleDialogOption(
  53. child: Text(
  54. "${value}",
  55. style: TextStyle(fontSize: 16, fontWeight: FontWeight.w500),
  56. ),
  57. onPressed: () {
  58. _getImage(value == '拍照' ? 1 : 0);
  59. Navigator.of(context).pop();
  60. },
  61. );
  62. }).toList());
  63. });
  64. }
  65. void _getImage(int key) async {
  66. try {
  67. var _imageFile = await ImagePicker.pickImage(
  68. source: key == 1 ? ImageSource.camera : ImageSource.gallery,
  69. maxWidth: 800,
  70. imageQuality: 95);
  71. if (_imageFile != null) {
  72. images.add(_imageFile);
  73. setState(() {});
  74. }
  75. } catch (e) {
  76. toasts("没有权限,无法打开相册!");
  77. }
  78. }
  79. @override
  80. Widget build(BuildContext context) {
  81. return Scaffold(
  82. backgroundColor: ThemeUtils.getTabsBg(context),
  83. appBar: MyAppBar(
  84. centerTitle: "提交竣工单",
  85. ),
  86. body: Column(
  87. crossAxisAlignment: CrossAxisAlignment.start,
  88. children: <Widget>[
  89. Container(
  90. padding: EdgeInsets.fromLTRB(15, 10, 15, 10),
  91. child: Text("竣工单"),
  92. ),
  93. Container(
  94. color: ThemeUtils.getTabsBg(context),
  95. child: GridView.builder(
  96. shrinkWrap: true,
  97. padding: const EdgeInsets.fromLTRB(8.0, 12, 8.0, 12.0),
  98. physics: NeverScrollableScrollPhysics(),
  99. gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
  100. crossAxisCount: 3, childAspectRatio: 1.18),
  101. itemCount: images.length >= 9 ? 9 : images.length + 1,
  102. itemBuilder: (_, index) {
  103. return Stack(
  104. children: <Widget>[
  105. Center(
  106. child: SelectedImage(
  107. image: index < images.length ? images[index] : null,
  108. onTap: () {
  109. selectPicker();
  110. }),
  111. )
  112. ],
  113. );
  114. },
  115. )),
  116. Container(
  117. child: Padding(
  118. padding: const EdgeInsets.all(16),
  119. child: MyButton(
  120. fontSize: 14,
  121. onPressed: () {
  122. _saveFinish();
  123. },
  124. text: "确定",
  125. ),
  126. ))
  127. ],
  128. ),
  129. );
  130. }
  131. }