Showing
15 changed files
with
962 additions
and
361 deletions
| @@ -18,19 +18,19 @@ if (flutterRoot == null) { | @@ -18,19 +18,19 @@ if (flutterRoot == null) { | ||
| 18 | 18 | ||
| 19 | 19 | ||
| 20 | 20 | ||
| 21 | -def flutterVersionCode = "515" | 21 | +def flutterVersionCode = "516" |
| 22 | if (flutterVersionCode == null) { | 22 | if (flutterVersionCode == null) { |
| 23 | - flutterVersionCode = '515' | 23 | + flutterVersionCode = '516' |
| 24 | 24 | ||
| 25 | 25 | ||
| 26 | 26 | ||
| 27 | } | 27 | } |
| 28 | 28 | ||
| 29 | 29 | ||
| 30 | -def flutterVersionName = "5.1.5" | 30 | +def flutterVersionName = "5.1.6" |
| 31 | 31 | ||
| 32 | if (flutterVersionName == null) { | 32 | if (flutterVersionName == null) { |
| 33 | - flutterVersionName = '5.1.5' | 33 | + flutterVersionName = '5.1.6' |
| 34 | 34 | ||
| 35 | 35 | ||
| 36 | } | 36 | } |
assets/phone_detail.png
0 → 100644
2.59 KB
| @@ -28,6 +28,7 @@ import '../../models/user_history_entity.dart'; | @@ -28,6 +28,7 @@ import '../../models/user_history_entity.dart'; | ||
| 28 | import '../../utils/screen_util.dart'; | 28 | import '../../utils/screen_util.dart'; |
| 29 | import '../../widgets/MyDivider.dart'; | 29 | import '../../widgets/MyDivider.dart'; |
| 30 | import '../../widgets/special_text/my_extended_text_selection_controls.dart'; | 30 | import '../../widgets/special_text/my_extended_text_selection_controls.dart'; |
| 31 | +import 'package:flutter_picker/flutter_picker.dart' as Picker; | ||
| 31 | 32 | ||
| 32 | /** | 33 | /** |
| 33 | * 填写预订联系人页面 | 34 | * 填写预订联系人页面 |
| @@ -159,7 +160,7 @@ class _EditReserverPageState extends State<EditReserverPage> { | @@ -159,7 +160,7 @@ class _EditReserverPageState extends State<EditReserverPage> { | ||
| 159 | return; | 160 | return; |
| 160 | } | 161 | } |
| 161 | if (name != '') { | 162 | if (name != '') { |
| 162 | - detailModel.nameController.text = name + suffix; | 163 | + detailModel.nameController.text = name + suffix??''; |
| 163 | } | 164 | } |
| 164 | } | 165 | } |
| 165 | 166 | ||
| @@ -214,25 +215,118 @@ class _EditReserverPageState extends State<EditReserverPage> { | @@ -214,25 +215,118 @@ class _EditReserverPageState extends State<EditReserverPage> { | ||
| 214 | 215 | ||
| 215 | _getCallLog() async { | 216 | _getCallLog() async { |
| 216 | Iterable<CallLogEntry> result = await CallLog.query(); | 217 | Iterable<CallLogEntry> result = await CallLog.query(); |
| 217 | - detailModel.userHistorys = []; | 218 | + List<Picker.PickerItem<dynamic>> data = []; |
| 218 | 219 | ||
| 219 | List<CallLogEntry> object = Utils.removeDuplicates(result.toList()); | 220 | List<CallLogEntry> object = Utils.removeDuplicates(result.toList()); |
| 220 | 221 | ||
| 221 | print(object); | 222 | print(object); |
| 223 | + | ||
| 224 | + detailModel.userHistorys = []; | ||
| 225 | + showPhoneHistory = false; | ||
| 226 | + // setState(() {}); | ||
| 227 | + | ||
| 222 | object.forEach((element) { | 228 | object.forEach((element) { |
| 223 | - UserHistoryEntity userHistoryEntity = | ||
| 224 | - UserHistoryEntity(null, null, '', '', '', '', '', null); | ||
| 225 | - userHistoryEntity.rname = element.name ?? ''; | ||
| 226 | - userHistoryEntity.phone = element.number ?? ''; | ||
| 227 | - detailModel.userHistorys.add(userHistoryEntity); | 229 | + detailModel.userHistorys.add(UserHistoryEntity( |
| 230 | + '', '', element.name ?? '', '1', element.number, '', '', '')); | ||
| 231 | + | ||
| 232 | + String title = ''; | ||
| 233 | + title += ' ${element.number ?? ''}'; | ||
| 234 | + if (element.name != null && element.name != '') { | ||
| 235 | + title += ' ${element.name}'; | ||
| 236 | + } | ||
| 237 | + | ||
| 238 | + String stateStr = ''; //状态 | ||
| 239 | + | ||
| 240 | + if (element.callType.name == 'incoming' || | ||
| 241 | + element.callType.name == 'wifiIncoming' || | ||
| 242 | + element.callType.name == 'answeredExternally') { | ||
| 243 | + stateStr = ' 呼入'; | ||
| 244 | + } else if (element.callType.name == 'outgoing' || | ||
| 245 | + element.callType.name == 'wifiOutgoing' || | ||
| 246 | + element.callType.name == 'voiceMail') { | ||
| 247 | + stateStr = ' 呼出'; | ||
| 248 | + } else if (element.callType.name == 'missed') { | ||
| 249 | + stateStr = ' 未接'; | ||
| 250 | + } else if (element.callType.name == 'rejected') { | ||
| 251 | + stateStr = ' 拒接'; | ||
| 252 | + } else if (element.callType.name == 'blocked') { | ||
| 253 | + stateStr = ' 拦截'; | ||
| 254 | + } | ||
| 255 | + | ||
| 256 | + String sunString = | ||
| 257 | + Utils.formatCallLogFromMill(element.timestamp.toString()); | ||
| 258 | + | ||
| 259 | + data.add(Picker.PickerItem( | ||
| 260 | + text: Row( | ||
| 261 | + mainAxisAlignment: MainAxisAlignment.spaceBetween, | ||
| 262 | + children: [ | ||
| 263 | + Expanded( | ||
| 264 | + child: Row( | ||
| 265 | + children: [ | ||
| 266 | + HEmptyView(30), | ||
| 267 | + Text(title ?? '', | ||
| 268 | + style: TextStyle( | ||
| 269 | + fontSize: font(16), color: MyColours.color_515151)), | ||
| 270 | + Expanded( | ||
| 271 | + child: Text(stateStr ?? '', | ||
| 272 | + style: TextStyle( | ||
| 273 | + fontSize: font(16), | ||
| 274 | + color: MyColours.color_26000000))), | ||
| 275 | + ], | ||
| 276 | + )), | ||
| 277 | + Container( | ||
| 278 | + margin: EdgeInsets.only(right: w(15)), | ||
| 279 | + child: Text(sunString ?? '', | ||
| 280 | + style: TextStyle( | ||
| 281 | + fontSize: font(16), color: MyColours.color_515151))) | ||
| 282 | + ], | ||
| 283 | + ))); | ||
| 228 | }); | 284 | }); |
| 229 | - if (object.length > 0) { | ||
| 230 | - //有记录 | ||
| 231 | - showPhoneHistory = true; | ||
| 232 | - setState(() {}); | 285 | + if (data.length > 0) { |
| 286 | + //有记录,底部弹窗展示 | ||
| 287 | + // showPhoneHistory = true; | ||
| 288 | + // setState(() {}); | ||
| 289 | + DialogUtil.showSelectCusmanWidgetDialog(context, data, (value) { | ||
| 290 | + if (value != null) { | ||
| 291 | + _byValueToReqeust(value[0]); | ||
| 292 | + } | ||
| 293 | + }, title: '从通话记录选择客人电话', selecteds: [ | ||
| 294 | + // _getFirSelected(hourAndMinute, data), | ||
| 295 | + // _getSecSelected(hourAndMinute) | ||
| 296 | + ]).then((value) { | ||
| 297 | + print(value); | ||
| 298 | + }); | ||
| 299 | + } else { | ||
| 300 | + Utils.showToast('暂无通话记录!'); | ||
| 233 | } | 301 | } |
| 234 | } | 302 | } |
| 235 | 303 | ||
| 304 | + _byValueToReqeust(int index) { | ||
| 305 | + setState(() { | ||
| 306 | + showPhoneHistory = false; | ||
| 307 | + UserHistoryEntity userHistoryEntity = detailModel.userHistorys[index]; | ||
| 308 | + detailModel.phoneController.text = | ||
| 309 | + userHistoryEntity.phone != null ? userHistoryEntity.phone : ''; | ||
| 310 | + for (var item in detailModel.sexList) { | ||
| 311 | + item['select'] = false; | ||
| 312 | + if (item['title'] == userHistoryEntity.sexStr) { | ||
| 313 | + item['select'] = true; | ||
| 314 | + } | ||
| 315 | + } | ||
| 316 | + | ||
| 317 | + if ((nameStr != null && nameStr != '') && | ||
| 318 | + (userHistoryEntity.rname == '' || userHistoryEntity.rname == null)) { | ||
| 319 | + } else { | ||
| 320 | + nameStr = userHistoryEntity.rname; | ||
| 321 | + } | ||
| 322 | + | ||
| 323 | + _addNameSuffix(userHistoryEntity.rname, _nameSuffix()); | ||
| 324 | + | ||
| 325 | + _phoneNode.unfocus(); | ||
| 326 | + detailModel.userHistorys.clear(); | ||
| 327 | + }); | ||
| 328 | + } | ||
| 329 | + | ||
| 236 | @override | 330 | @override |
| 237 | Widget build(BuildContext context) { | 331 | Widget build(BuildContext context) { |
| 238 | detailModel = Provider.of<NotebookDetailModel>(context, listen: true); | 332 | detailModel = Provider.of<NotebookDetailModel>(context, listen: true); |
| @@ -728,50 +822,51 @@ class _EditReserverPageState extends State<EditReserverPage> { | @@ -728,50 +822,51 @@ class _EditReserverPageState extends State<EditReserverPage> { | ||
| 728 | itemBuilder: (context, index) { | 822 | itemBuilder: (context, index) { |
| 729 | return GestureDetector( | 823 | return GestureDetector( |
| 730 | onTap: () { | 824 | onTap: () { |
| 731 | - setState(() { | ||
| 732 | - showPhoneHistory = false; | ||
| 733 | - UserHistoryEntity | ||
| 734 | - userHistoryEntity = | ||
| 735 | - detailModel | ||
| 736 | - .userHistorys[ | ||
| 737 | - index]; | ||
| 738 | - if (userHistoryEntity.sex == | ||
| 739 | - null || | ||
| 740 | - userHistoryEntity.sex == | ||
| 741 | - '') { | ||
| 742 | - userHistoryEntity.sex = | ||
| 743 | - '1'; | ||
| 744 | - } | ||
| 745 | - detailModel.phoneController | ||
| 746 | - .text = | ||
| 747 | - userHistoryEntity | ||
| 748 | - .phone != | ||
| 749 | - null | ||
| 750 | - ? userHistoryEntity | ||
| 751 | - .phone | ||
| 752 | - : ''; | ||
| 753 | - for (var item in detailModel | ||
| 754 | - .sexList) { | ||
| 755 | - item['select'] = false; | ||
| 756 | - if (item['title'] == | ||
| 757 | - userHistoryEntity | ||
| 758 | - .sexStr) { | ||
| 759 | - item['select'] = true; | ||
| 760 | - } | ||
| 761 | - } | ||
| 762 | - // _homeEnterModel.nameController.text = | ||
| 763 | - // _homeEnterModel | ||
| 764 | - // .userHistorys[index].rname + | ||
| 765 | - // _nameSuffix(); | ||
| 766 | - _addNameSuffix( | ||
| 767 | - userHistoryEntity.rname, | ||
| 768 | - _nameSuffix()); | ||
| 769 | - nameStr = | ||
| 770 | - userHistoryEntity.rname; | ||
| 771 | - _phoneNode.unfocus(); | ||
| 772 | - detailModel.userHistorys | ||
| 773 | - .clear(); | ||
| 774 | - }); | 825 | + _byValueToReqeust(index); |
| 826 | + // setState(() { | ||
| 827 | + // showPhoneHistory = false; | ||
| 828 | + // UserHistoryEntity | ||
| 829 | + // userHistoryEntity = | ||
| 830 | + // detailModel | ||
| 831 | + // .userHistorys[ | ||
| 832 | + // index]; | ||
| 833 | + // if (userHistoryEntity.sex == | ||
| 834 | + // null || | ||
| 835 | + // userHistoryEntity.sex == | ||
| 836 | + // '') { | ||
| 837 | + // userHistoryEntity.sex = | ||
| 838 | + // '1'; | ||
| 839 | + // } | ||
| 840 | + // detailModel.phoneController | ||
| 841 | + // .text = | ||
| 842 | + // userHistoryEntity | ||
| 843 | + // .phone != | ||
| 844 | + // null | ||
| 845 | + // ? userHistoryEntity | ||
| 846 | + // .phone | ||
| 847 | + // : ''; | ||
| 848 | + // for (var item in detailModel | ||
| 849 | + // .sexList) { | ||
| 850 | + // item['select'] = false; | ||
| 851 | + // if (item['title'] == | ||
| 852 | + // userHistoryEntity | ||
| 853 | + // .sexStr) { | ||
| 854 | + // item['select'] = true; | ||
| 855 | + // } | ||
| 856 | + // } | ||
| 857 | + // // _homeEnterModel.nameController.text = | ||
| 858 | + // // _homeEnterModel | ||
| 859 | + // // .userHistorys[index].rname + | ||
| 860 | + // // _nameSuffix(); | ||
| 861 | + // _addNameSuffix( | ||
| 862 | + // userHistoryEntity.rname, | ||
| 863 | + // _nameSuffix()); | ||
| 864 | + // nameStr = | ||
| 865 | + // userHistoryEntity.rname; | ||
| 866 | + // _phoneNode.unfocus(); | ||
| 867 | + // detailModel.userHistorys | ||
| 868 | + // .clear(); | ||
| 869 | + // }); | ||
| 775 | }, | 870 | }, |
| 776 | child: Container( | 871 | child: Container( |
| 777 | width: double.infinity, | 872 | width: double.infinity, |
| @@ -40,6 +40,7 @@ import 'package:easy_contact_picker/easy_contact_picker.dart'; | @@ -40,6 +40,7 @@ import 'package:easy_contact_picker/easy_contact_picker.dart'; | ||
| 40 | import '../../models/user_history_entity.dart'; | 40 | import '../../models/user_history_entity.dart'; |
| 41 | import '../../utils/screen_util.dart'; | 41 | import '../../utils/screen_util.dart'; |
| 42 | import '../../widgets/special_text/my_extended_text_selection_controls.dart'; | 42 | import '../../widgets/special_text/my_extended_text_selection_controls.dart'; |
| 43 | +import 'package:flutter_picker/flutter_picker.dart' as Picker; | ||
| 43 | 44 | ||
| 44 | typedef clickCallback = void Function(String value); | 45 | typedef clickCallback = void Function(String value); |
| 45 | 46 | ||
| @@ -531,8 +532,8 @@ class _NoteBookChangeFPageState extends State<NoteBookChangeFPage> { | @@ -531,8 +532,8 @@ class _NoteBookChangeFPageState extends State<NoteBookChangeFPage> { | ||
| 531 | _notebookDetailChangeModel.nameController.text.endsWith(suffix)) { | 532 | _notebookDetailChangeModel.nameController.text.endsWith(suffix)) { |
| 532 | return; | 533 | return; |
| 533 | } | 534 | } |
| 534 | - if (name != '') { | ||
| 535 | - _notebookDetailChangeModel.nameController.text = name + suffix; | 535 | + if (name != ''&& name != null) { |
| 536 | + _notebookDetailChangeModel.nameController.text = name + suffix??''; | ||
| 536 | } | 537 | } |
| 537 | } | 538 | } |
| 538 | /** | 539 | /** |
| @@ -1053,27 +1054,154 @@ class _NoteBookChangeFPageState extends State<NoteBookChangeFPage> { | @@ -1053,27 +1054,154 @@ class _NoteBookChangeFPageState extends State<NoteBookChangeFPage> { | ||
| 1053 | ); | 1054 | ); |
| 1054 | } | 1055 | } |
| 1055 | 1056 | ||
| 1057 | + // _getCallLog() async { | ||
| 1058 | + // Iterable<CallLogEntry> result = await CallLog.query(); | ||
| 1059 | + // _notebookDetailChangeModel.userHistorys = []; | ||
| 1060 | + | ||
| 1061 | + // List<CallLogEntry> object = Utils.removeDuplicates(result.toList()); | ||
| 1062 | + | ||
| 1063 | + // print(object); | ||
| 1064 | + // object.forEach((element) { | ||
| 1065 | + // UserHistoryEntity userHistoryEntity = | ||
| 1066 | + // UserHistoryEntity(null, null, '', '', '', '', '', null); | ||
| 1067 | + // userHistoryEntity.rname = element.name ?? ''; | ||
| 1068 | + // userHistoryEntity.phone = element.number ?? ''; | ||
| 1069 | + // _notebookDetailChangeModel.userHistorys.add(userHistoryEntity); | ||
| 1070 | + // }); | ||
| 1071 | + // if (object.length > 0) { | ||
| 1072 | + // //有记录 | ||
| 1073 | + // showPhoneHistory = true; | ||
| 1074 | + // setState(() {}); | ||
| 1075 | + // } | ||
| 1076 | + // } | ||
| 1056 | _getCallLog() async { | 1077 | _getCallLog() async { |
| 1057 | Iterable<CallLogEntry> result = await CallLog.query(); | 1078 | Iterable<CallLogEntry> result = await CallLog.query(); |
| 1058 | - _notebookDetailChangeModel.userHistorys = []; | 1079 | + List<Picker.PickerItem<dynamic>> data = []; |
| 1059 | 1080 | ||
| 1060 | List<CallLogEntry> object = Utils.removeDuplicates(result.toList()); | 1081 | List<CallLogEntry> object = Utils.removeDuplicates(result.toList()); |
| 1061 | 1082 | ||
| 1062 | print(object); | 1083 | print(object); |
| 1084 | + | ||
| 1085 | + _notebookDetailChangeModel.userHistorys = []; | ||
| 1086 | + showPhoneHistory = false; | ||
| 1087 | + // setState(() {}); | ||
| 1088 | + | ||
| 1063 | object.forEach((element) { | 1089 | object.forEach((element) { |
| 1064 | - UserHistoryEntity userHistoryEntity = | ||
| 1065 | - UserHistoryEntity(null, null, '', '', '', '', '', null); | ||
| 1066 | - userHistoryEntity.rname = element.name ?? ''; | ||
| 1067 | - userHistoryEntity.phone = element.number ?? ''; | ||
| 1068 | - _notebookDetailChangeModel.userHistorys.add(userHistoryEntity); | 1090 | + _notebookDetailChangeModel.userHistorys.add(UserHistoryEntity( |
| 1091 | + '', '', element.name ?? '', '1', element.number, '', '', '')); | ||
| 1092 | + | ||
| 1093 | + String title = ''; | ||
| 1094 | + title += ' ${element.number ?? ''}'; | ||
| 1095 | + if (element.name != null && element.name != '') { | ||
| 1096 | + title += ' ${element.name}'; | ||
| 1097 | + } | ||
| 1098 | + | ||
| 1099 | + String stateStr = ''; //状态 | ||
| 1100 | + | ||
| 1101 | + if (element.callType.name == 'incoming' || | ||
| 1102 | + element.callType.name == 'wifiIncoming' || | ||
| 1103 | + element.callType.name == 'answeredExternally') { | ||
| 1104 | + stateStr = ' 呼入'; | ||
| 1105 | + } else if (element.callType.name == 'outgoing' || | ||
| 1106 | + element.callType.name == 'wifiOutgoing' || | ||
| 1107 | + element.callType.name == 'voiceMail') { | ||
| 1108 | + stateStr = ' 呼出'; | ||
| 1109 | + } else if (element.callType.name == 'missed') { | ||
| 1110 | + stateStr = ' 未接'; | ||
| 1111 | + } else if (element.callType.name == 'rejected') { | ||
| 1112 | + stateStr = ' 拒接'; | ||
| 1113 | + } else if (element.callType.name == 'blocked') { | ||
| 1114 | + stateStr = ' 拦截'; | ||
| 1115 | + } | ||
| 1116 | + | ||
| 1117 | + String sunString = | ||
| 1118 | + Utils.formatCallLogFromMill(element.timestamp.toString()); | ||
| 1119 | + | ||
| 1120 | + data.add(Picker.PickerItem( | ||
| 1121 | + text: Row( | ||
| 1122 | + mainAxisAlignment: MainAxisAlignment.spaceBetween, | ||
| 1123 | + children: [ | ||
| 1124 | + Expanded( | ||
| 1125 | + child: Row( | ||
| 1126 | + children: [ | ||
| 1127 | + HEmptyView(30), | ||
| 1128 | + Text(title ?? '', | ||
| 1129 | + style: TextStyle( | ||
| 1130 | + fontSize: font(16), color: MyColours.color_515151)), | ||
| 1131 | + Expanded( | ||
| 1132 | + child: Text(stateStr ?? '', | ||
| 1133 | + style: TextStyle( | ||
| 1134 | + fontSize: font(16), | ||
| 1135 | + color: MyColours.color_26000000))), | ||
| 1136 | + ], | ||
| 1137 | + )), | ||
| 1138 | + Container( | ||
| 1139 | + margin: EdgeInsets.only(right: w(15)), | ||
| 1140 | + child: Text(sunString ?? '', | ||
| 1141 | + style: TextStyle( | ||
| 1142 | + fontSize: font(16), color: MyColours.color_515151))) | ||
| 1143 | + ], | ||
| 1144 | + ))); | ||
| 1069 | }); | 1145 | }); |
| 1070 | - if (object.length > 0) { | ||
| 1071 | - //有记录 | ||
| 1072 | - showPhoneHistory = true; | ||
| 1073 | - setState(() {}); | 1146 | + if (data.length > 0) { |
| 1147 | + //有记录,底部弹窗展示 | ||
| 1148 | + // showPhoneHistory = true; | ||
| 1149 | + // setState(() {}); | ||
| 1150 | + DialogUtil.showSelectCusmanWidgetDialog(context, data, (value) { | ||
| 1151 | + if (value != null) { | ||
| 1152 | + _byValueToReqeust(value[0]); | ||
| 1153 | + } | ||
| 1154 | + }, title: '从通话记录选择客人电话', selecteds: [ | ||
| 1155 | + // _getFirSelected(hourAndMinute, data), | ||
| 1156 | + // _getSecSelected(hourAndMinute) | ||
| 1157 | + ]).then((value) { | ||
| 1158 | + print(value); | ||
| 1159 | + }); | ||
| 1160 | + } else { | ||
| 1161 | + Utils.showToast('暂无通话记录!'); | ||
| 1074 | } | 1162 | } |
| 1075 | } | 1163 | } |
| 1076 | 1164 | ||
| 1165 | + _byValueToReqeust(int index) { | ||
| 1166 | + setState(() { | ||
| 1167 | + showPhoneHistory = false; | ||
| 1168 | + UserHistoryEntity userHistoryEntity = | ||
| 1169 | + _notebookDetailChangeModel.userHistorys[index]; | ||
| 1170 | + _notebookDetailChangeModel.phoneController.text = userHistoryEntity.phone; | ||
| 1171 | + // if (userHistoryEntity.sex == null || userHistoryEntity.sex == '') { | ||
| 1172 | + // userHistoryEntity.sex = '1'; | ||
| 1173 | + // } | ||
| 1174 | + // _homeEnterModel.nameController.text = | ||
| 1175 | + // _homeEnterModel | ||
| 1176 | + // .userHistorys[index].rname + | ||
| 1177 | + // _nameSuffix(); | ||
| 1178 | + for (var item in _notebookDetailChangeModel.sexList) { | ||
| 1179 | + item['select'] = false; | ||
| 1180 | + if (item['title'] == userHistoryEntity.sexStr) { | ||
| 1181 | + item['select'] = true; | ||
| 1182 | + } | ||
| 1183 | + } | ||
| 1184 | + _addNameSuffix(userHistoryEntity.rname, _nameSuffix()); | ||
| 1185 | + if (userHistoryEntity.rname == null || userHistoryEntity.rname == '') { | ||
| 1186 | + nameStr = _notebookDetailChangeModel.nameController.text; | ||
| 1187 | + if (nameStr.endsWith('女士')) { | ||
| 1188 | + nameStr = nameStr.replaceAll('女士', ''); | ||
| 1189 | + } | ||
| 1190 | + if (nameStr.endsWith('先生')) { | ||
| 1191 | + nameStr = nameStr.replaceAll('先生', ''); | ||
| 1192 | + } | ||
| 1193 | + if (nameStr.endsWith('公司')) { | ||
| 1194 | + nameStr = nameStr.replaceAll('公司', ''); | ||
| 1195 | + } | ||
| 1196 | + } else { | ||
| 1197 | + nameStr = userHistoryEntity.rname; | ||
| 1198 | + } | ||
| 1199 | + | ||
| 1200 | + _phoneNode.unfocus(); | ||
| 1201 | + _notebookDetailChangeModel.userHistorys.clear(); | ||
| 1202 | + }); | ||
| 1203 | + } | ||
| 1204 | + | ||
| 1077 | _openAddressBook() async { | 1205 | _openAddressBook() async { |
| 1078 | if (!(await checkContactPermission())) { | 1206 | if (!(await checkContactPermission())) { |
| 1079 | PermissionStatus permissionStatus = await contactPermissionStatus(); | 1207 | PermissionStatus permissionStatus = await contactPermissionStatus(); |
| @@ -1967,67 +2095,68 @@ class _NoteBookChangeFPageState extends State<NoteBookChangeFPage> { | @@ -1967,67 +2095,68 @@ class _NoteBookChangeFPageState extends State<NoteBookChangeFPage> { | ||
| 1967 | itemBuilder: (context, index) { | 2095 | itemBuilder: (context, index) { |
| 1968 | return GestureDetector( | 2096 | return GestureDetector( |
| 1969 | onTap: () { | 2097 | onTap: () { |
| 1970 | - setState(() { | ||
| 1971 | - showPhoneHistory = false; | ||
| 1972 | - UserHistoryEntity | ||
| 1973 | - userHistoryEntity = | ||
| 1974 | - _notebookDetailChangeModel | ||
| 1975 | - .userHistorys[index]; | ||
| 1976 | - _notebookDetailChangeModel | ||
| 1977 | - .phoneController.text = | ||
| 1978 | - userHistoryEntity.phone; | ||
| 1979 | - if (userHistoryEntity.sex == | ||
| 1980 | - null || | ||
| 1981 | - userHistoryEntity.sex == | ||
| 1982 | - '') { | ||
| 1983 | - userHistoryEntity.sex = '1'; | ||
| 1984 | - } | ||
| 1985 | - // _homeEnterModel.nameController.text = | ||
| 1986 | - // _homeEnterModel | ||
| 1987 | - // .userHistorys[index].rname + | ||
| 1988 | - // _nameSuffix(); | ||
| 1989 | - for (var item | ||
| 1990 | - in _notebookDetailChangeModel | ||
| 1991 | - .sexList) { | ||
| 1992 | - item['select'] = false; | ||
| 1993 | - if (item['title'] == | ||
| 1994 | - userHistoryEntity | ||
| 1995 | - .sexStr) { | ||
| 1996 | - item['select'] = true; | ||
| 1997 | - } | ||
| 1998 | - } | ||
| 1999 | - _addNameSuffix( | ||
| 2000 | - userHistoryEntity.rname, | ||
| 2001 | - _nameSuffix()); | ||
| 2002 | - if (userHistoryEntity.rname == | ||
| 2003 | - null || | ||
| 2004 | - userHistoryEntity.rname == | ||
| 2005 | - '') { | ||
| 2006 | - nameStr = | ||
| 2007 | - _notebookDetailChangeModel | ||
| 2008 | - .nameController.text; | ||
| 2009 | - if (nameStr.endsWith('女士')) { | ||
| 2010 | - nameStr = nameStr | ||
| 2011 | - .replaceAll('女士', ''); | ||
| 2012 | - } | ||
| 2013 | - if (nameStr.endsWith('先生')) { | ||
| 2014 | - nameStr = nameStr | ||
| 2015 | - .replaceAll('先生', ''); | ||
| 2016 | - } | ||
| 2017 | - if (nameStr.endsWith('公司')) { | ||
| 2018 | - nameStr = nameStr | ||
| 2019 | - .replaceAll('公司', ''); | ||
| 2020 | - } | ||
| 2021 | - } else { | ||
| 2022 | - nameStr = | ||
| 2023 | - userHistoryEntity.rname; | ||
| 2024 | - } | ||
| 2025 | - | ||
| 2026 | - _phoneNode.unfocus(); | ||
| 2027 | - _notebookDetailChangeModel | ||
| 2028 | - .userHistorys | ||
| 2029 | - .clear(); | ||
| 2030 | - }); | 2098 | + _byValueToReqeust(index); |
| 2099 | + // setState(() { | ||
| 2100 | + // showPhoneHistory = false; | ||
| 2101 | + // UserHistoryEntity | ||
| 2102 | + // userHistoryEntity = | ||
| 2103 | + // _notebookDetailChangeModel | ||
| 2104 | + // .userHistorys[index]; | ||
| 2105 | + // _notebookDetailChangeModel | ||
| 2106 | + // .phoneController.text = | ||
| 2107 | + // userHistoryEntity.phone; | ||
| 2108 | + // if (userHistoryEntity.sex == | ||
| 2109 | + // null || | ||
| 2110 | + // userHistoryEntity.sex == | ||
| 2111 | + // '') { | ||
| 2112 | + // userHistoryEntity.sex = '1'; | ||
| 2113 | + // } | ||
| 2114 | + // // _homeEnterModel.nameController.text = | ||
| 2115 | + // // _homeEnterModel | ||
| 2116 | + // // .userHistorys[index].rname + | ||
| 2117 | + // // _nameSuffix(); | ||
| 2118 | + // for (var item | ||
| 2119 | + // in _notebookDetailChangeModel | ||
| 2120 | + // .sexList) { | ||
| 2121 | + // item['select'] = false; | ||
| 2122 | + // if (item['title'] == | ||
| 2123 | + // userHistoryEntity | ||
| 2124 | + // .sexStr) { | ||
| 2125 | + // item['select'] = true; | ||
| 2126 | + // } | ||
| 2127 | + // } | ||
| 2128 | + // _addNameSuffix( | ||
| 2129 | + // userHistoryEntity.rname, | ||
| 2130 | + // _nameSuffix()); | ||
| 2131 | + // if (userHistoryEntity.rname == | ||
| 2132 | + // null || | ||
| 2133 | + // userHistoryEntity.rname == | ||
| 2134 | + // '') { | ||
| 2135 | + // nameStr = | ||
| 2136 | + // _notebookDetailChangeModel | ||
| 2137 | + // .nameController.text; | ||
| 2138 | + // if (nameStr.endsWith('女士')) { | ||
| 2139 | + // nameStr = nameStr | ||
| 2140 | + // .replaceAll('女士', ''); | ||
| 2141 | + // } | ||
| 2142 | + // if (nameStr.endsWith('先生')) { | ||
| 2143 | + // nameStr = nameStr | ||
| 2144 | + // .replaceAll('先生', ''); | ||
| 2145 | + // } | ||
| 2146 | + // if (nameStr.endsWith('公司')) { | ||
| 2147 | + // nameStr = nameStr | ||
| 2148 | + // .replaceAll('公司', ''); | ||
| 2149 | + // } | ||
| 2150 | + // } else { | ||
| 2151 | + // nameStr = | ||
| 2152 | + // userHistoryEntity.rname; | ||
| 2153 | + // } | ||
| 2154 | + | ||
| 2155 | + // _phoneNode.unfocus(); | ||
| 2156 | + // _notebookDetailChangeModel | ||
| 2157 | + // .userHistorys | ||
| 2158 | + // .clear(); | ||
| 2159 | + // }); | ||
| 2031 | }, | 2160 | }, |
| 2032 | child: Container( | 2161 | child: Container( |
| 2033 | width: double.infinity, | 2162 | width: double.infinity, |
| @@ -1603,31 +1603,33 @@ class NotebookDetailPageState extends State<NotebookDetailPage> { | @@ -1603,31 +1603,33 @@ class NotebookDetailPageState extends State<NotebookDetailPage> { | ||
| 1603 | TextStyle(color: MyColours.color_999999, fontSize: font(14)), | 1603 | TextStyle(color: MyColours.color_999999, fontSize: font(14)), |
| 1604 | ), | 1604 | ), |
| 1605 | ])), | 1605 | ])), |
| 1606 | - Container( | ||
| 1607 | - padding: EdgeInsets.only(left: w(13), top: w(10)), | ||
| 1608 | - child: | ||
| 1609 | - Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ | ||
| 1610 | - Text( | ||
| 1611 | - '最后修改', | ||
| 1612 | - overflow: TextOverflow.ellipsis, | ||
| 1613 | - style: | ||
| 1614 | - TextStyle(color: MyColours.color_515151, fontSize: font(14)), | ||
| 1615 | - ), | ||
| 1616 | - // HEmptyView(40), | ||
| 1617 | - Expanded( | ||
| 1618 | - child: Text( | ||
| 1619 | - '${detailEntity.nick_name ?? ''}' + | ||
| 1620 | - ' ' + | ||
| 1621 | - '${detailEntity.seller_user_phone ?? ''}' + | ||
| 1622 | - (detailEntity.up_date == null | ||
| 1623 | - ? '' | ||
| 1624 | - : ' ${_getDateTime(detailEntity.up_date)}'), | ||
| 1625 | - // overflow: TextOverflow.ellipsis, | ||
| 1626 | - textAlign: TextAlign.right, | ||
| 1627 | - style: | ||
| 1628 | - TextStyle(color: MyColours.color_999999, fontSize: font(14)), | ||
| 1629 | - )), | ||
| 1630 | - ])), | 1606 | + if (detailEntity.up_date != null) |
| 1607 | + Container( | ||
| 1608 | + padding: EdgeInsets.only(left: w(13), top: w(10)), | ||
| 1609 | + child: Row( | ||
| 1610 | + mainAxisAlignment: MainAxisAlignment.spaceBetween, | ||
| 1611 | + children: [ | ||
| 1612 | + Text( | ||
| 1613 | + '最后修改', | ||
| 1614 | + overflow: TextOverflow.ellipsis, | ||
| 1615 | + style: TextStyle( | ||
| 1616 | + color: MyColours.color_515151, fontSize: font(14)), | ||
| 1617 | + ), | ||
| 1618 | + // HEmptyView(40), | ||
| 1619 | + Expanded( | ||
| 1620 | + child: Text( | ||
| 1621 | + '${detailEntity.nick_name ?? ''}' + | ||
| 1622 | + ' ' + | ||
| 1623 | + '${detailEntity.seller_user_phone ?? ''}' + | ||
| 1624 | + (detailEntity.up_date == null | ||
| 1625 | + ? '' | ||
| 1626 | + : ' ${_getDateTime(detailEntity.up_date)}'), | ||
| 1627 | + // overflow: TextOverflow.ellipsis, | ||
| 1628 | + textAlign: TextAlign.right, | ||
| 1629 | + style: TextStyle( | ||
| 1630 | + color: MyColours.color_999999, fontSize: font(14)), | ||
| 1631 | + )), | ||
| 1632 | + ])), | ||
| 1631 | Offstage( | 1633 | Offstage( |
| 1632 | offstage: (detailEntity.status == "4" && detailEntity.cancel != null) | 1634 | offstage: (detailEntity.status == "4" && detailEntity.cancel != null) |
| 1633 | ? false | 1635 | ? false |
| @@ -3041,16 +3043,13 @@ class NotebookDetailPageState extends State<NotebookDetailPage> { | @@ -3041,16 +3043,13 @@ class NotebookDetailPageState extends State<NotebookDetailPage> { | ||
| 3041 | .rnameStr, | 3043 | .rnameStr, |
| 3042 | textColor: MyColours | 3044 | textColor: MyColours |
| 3043 | .color_515151), | 3045 | .color_515151), |
| 3044 | - (detailEntity.status == | ||
| 3045 | - "4" && | 3046 | + (detailEntity.status == "4" && |
| 3046 | detailEntity | 3047 | detailEntity |
| 3047 | .cancel != | 3048 | .cancel != |
| 3048 | null && | 3049 | null && |
| 3049 | - (detailEntity | ||
| 3050 | - .phone == | 3050 | + (detailEntity.phone == |
| 3051 | null || | 3051 | null || |
| 3052 | - detailEntity | ||
| 3053 | - .phone == | 3052 | + detailEntity.phone == |
| 3054 | '')) | 3053 | '')) |
| 3055 | ? SizedBox() | 3054 | ? SizedBox() |
| 3056 | : InkWell( | 3055 | : InkWell( |
| @@ -3098,7 +3097,12 @@ class NotebookDetailPageState extends State<NotebookDetailPage> { | @@ -3098,7 +3097,12 @@ class NotebookDetailPageState extends State<NotebookDetailPage> { | ||
| 3098 | : Utils.starPhone(detailEntity | 3097 | : Utils.starPhone(detailEntity |
| 3099 | .phone), | 3098 | .phone), |
| 3100 | textColor: MyColours | 3099 | textColor: MyColours |
| 3101 | - .color_515151)), | 3100 | + .color_515151, |
| 3101 | + textColorR: | ||
| 3102 | + MyColours | ||
| 3103 | + .color_438E93, | ||
| 3104 | + imageName: | ||
| 3105 | + 'phone_detail')), | ||
| 3102 | (detailEntity.status == | 3106 | (detailEntity.status == |
| 3103 | "4" && | 3107 | "4" && |
| 3104 | detailEntity | 3108 | detailEntity |
| @@ -267,18 +267,18 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver { | @@ -267,18 +267,18 @@ class HomePageState extends State<HomePage> with WidgetsBindingObserver { | ||
| 267 | if (widget.initialIndex == 0 || | 267 | if (widget.initialIndex == 0 || |
| 268 | widget.initialIndex == 1 && needRefreshTemp == false) return; | 268 | widget.initialIndex == 1 && needRefreshTemp == false) return; |
| 269 | _initNotification(); | 269 | _initNotification(); |
| 270 | - Future.delayed(Duration(milliseconds: 30000), () { | ||
| 271 | - //30000 | ||
| 272 | - ContactModel.getInstance().uploadLocalContact(context); | ||
| 273 | - UserModel usermodel = Provider.of<UserModel>(context, listen: false); | ||
| 274 | - | ||
| 275 | - if (needUpdate && !usermodel.downLoading) { | ||
| 276 | - UpdateModelMy updateModel = new UpdateModelMy(); | ||
| 277 | - updateModel.checkUpdate(context, (version) { | ||
| 278 | - updateModel.showUpdateDialog(context, version); | ||
| 279 | - }, showToast: false); | ||
| 280 | - } | ||
| 281 | - }); | 270 | + // Future.delayed(Duration(milliseconds: 30000), () { |
| 271 | + // //30000 | ||
| 272 | + // ContactModel.getInstance().uploadLocalContact(context); | ||
| 273 | + // UserModel usermodel = Provider.of<UserModel>(context, listen: false); | ||
| 274 | + | ||
| 275 | + // if (needUpdate && !usermodel.downLoading) { | ||
| 276 | + // UpdateModelMy updateModel = new UpdateModelMy(); | ||
| 277 | + // updateModel.checkUpdate(context, (version) { | ||
| 278 | + // updateModel.showUpdateDialog(context, version); | ||
| 279 | + // }, showToast: false); | ||
| 280 | + // } | ||
| 281 | + // }); | ||
| 282 | 282 | ||
| 283 | if (Utils.getAuthority(context, '消息中心')) { | 283 | if (Utils.getAuthority(context, '消息中心')) { |
| 284 | timer = Timer.periodic(Duration(minutes: 3), (_) { | 284 | timer = Timer.periodic(Duration(minutes: 3), (_) { |
| 1 | import 'dart:async'; | 1 | import 'dart:async'; |
| 2 | import 'dart:convert'; | 2 | import 'dart:convert'; |
| 3 | import 'dart:io'; | 3 | import 'dart:io'; |
| 4 | -import 'dart:typed_data'; | ||
| 5 | import 'dart:ui'; | 4 | import 'dart:ui'; |
| 6 | 5 | ||
| 7 | import 'package:cached_network_image/cached_network_image.dart'; | 6 | import 'package:cached_network_image/cached_network_image.dart'; |
| @@ -11,14 +10,15 @@ import 'package:easy_contact_picker/easy_contact_picker.dart'; | @@ -11,14 +10,15 @@ import 'package:easy_contact_picker/easy_contact_picker.dart'; | ||
| 11 | import 'package:flutter/material.dart'; | 10 | import 'package:flutter/material.dart'; |
| 12 | import 'package:flutter/rendering.dart'; | 11 | import 'package:flutter/rendering.dart'; |
| 13 | import 'package:flutter/services.dart'; | 12 | import 'package:flutter/services.dart'; |
| 13 | +import 'package:flutter_picker/Picker.dart'; | ||
| 14 | import 'package:flutter_screenutil/flutter_screenutil.dart'; | 14 | import 'package:flutter_screenutil/flutter_screenutil.dart'; |
| 15 | import 'package:flutter_sms/flutter_sms.dart'; | 15 | import 'package:flutter_sms/flutter_sms.dart'; |
| 16 | -import 'package:one_key/constant/state.dart'; | 16 | + |
| 17 | import 'package:one_key/models/coupon_model.dart'; | 17 | import 'package:one_key/models/coupon_model.dart'; |
| 18 | import 'package:one_key/models/notebook_detail.dart'; | 18 | import 'package:one_key/models/notebook_detail.dart'; |
| 19 | import 'package:one_key/models/remark.dart'; | 19 | import 'package:one_key/models/remark.dart'; |
| 20 | import 'package:one_key/models/seller_phone_model.dart'; | 20 | import 'package:one_key/models/seller_phone_model.dart'; |
| 21 | -import 'package:one_key/models/user.dart'; | 21 | + |
| 22 | import 'package:one_key/pages/detail/notebook_detail_change_page_f.dart'; | 22 | import 'package:one_key/pages/detail/notebook_detail_change_page_f.dart'; |
| 23 | import 'package:one_key/pages/online_check/photo_view_wiget.dart'; | 23 | import 'package:one_key/pages/online_check/photo_view_wiget.dart'; |
| 24 | import 'package:one_key/provider/base_info_provider.dart'; | 24 | import 'package:one_key/provider/base_info_provider.dart'; |
| @@ -44,11 +44,14 @@ import 'package:permission_handler/permission_handler.dart'; | @@ -44,11 +44,14 @@ import 'package:permission_handler/permission_handler.dart'; | ||
| 44 | import 'package:provider/provider.dart'; | 44 | import 'package:provider/provider.dart'; |
| 45 | import 'package:one_key/models/table_list.dart' as t; | 45 | import 'package:one_key/models/table_list.dart' as t; |
| 46 | import 'package:sendsms/sendsms.dart'; | 46 | import 'package:sendsms/sendsms.dart'; |
| 47 | + | ||
| 47 | import 'dart:ui' as ui; | 48 | import 'dart:ui' as ui; |
| 48 | 49 | ||
| 49 | import '../../app.dart'; | 50 | import '../../app.dart'; |
| 50 | 51 | ||
| 52 | +import '../../constant/state.dart'; | ||
| 51 | import '../../models/sms_info.dart'; | 53 | import '../../models/sms_info.dart'; |
| 54 | +import '../../models/user.dart'; | ||
| 52 | import '../../models/user_history_entity.dart'; | 55 | import '../../models/user_history_entity.dart'; |
| 53 | import '../../provider/SmsModel.dart'; | 56 | import '../../provider/SmsModel.dart'; |
| 54 | import '../../provider/customer_provider.dart'; | 57 | import '../../provider/customer_provider.dart'; |
| @@ -56,6 +59,7 @@ import '../../provider/marketing_center_provider.dart'; | @@ -56,6 +59,7 @@ import '../../provider/marketing_center_provider.dart'; | ||
| 56 | import '../../provider/my_model.dart'; | 59 | import '../../provider/my_model.dart'; |
| 57 | import '../../utils/screen_util.dart'; | 60 | import '../../utils/screen_util.dart'; |
| 58 | import '../../widgets/special_text/my_extended_text_selection_controls.dart'; | 61 | import '../../widgets/special_text/my_extended_text_selection_controls.dart'; |
| 62 | +import 'package:flutter_picker/flutter_picker.dart' as Picker; | ||
| 59 | 63 | ||
| 60 | class InvicationPage extends StatefulWidget { | 64 | class InvicationPage extends StatefulWidget { |
| 61 | final String rid; //预订订单id | 65 | final String rid; //预订订单id |
| @@ -593,7 +597,13 @@ class InvicationPageState extends State<InvicationPage> | @@ -593,7 +597,13 @@ class InvicationPageState extends State<InvicationPage> | ||
| 593 | _baseIndoProvider.userHistorys[index].rname, sexStr); | 597 | _baseIndoProvider.userHistorys[index].rname, sexStr); |
| 594 | } | 598 | } |
| 595 | 599 | ||
| 596 | - nameStr = _baseIndoProvider.userHistorys[index].rname; | 600 | + if ((nameStr != '' && nameStr != null) && |
| 601 | + (_baseIndoProvider.userHistorys[index].rname == '' || | ||
| 602 | + _baseIndoProvider.userHistorys[index].rname == null)) { | ||
| 603 | + } else { | ||
| 604 | + nameStr = _baseIndoProvider.userHistorys[index].rname; | ||
| 605 | + } | ||
| 606 | + | ||
| 597 | _phoneNode.unfocus(); | 607 | _phoneNode.unfocus(); |
| 598 | _baseIndoProvider.userHistorys.clear(); | 608 | _baseIndoProvider.userHistorys.clear(); |
| 599 | }); | 609 | }); |
| @@ -2159,17 +2169,23 @@ class InvicationPageState extends State<InvicationPage> | @@ -2159,17 +2169,23 @@ class InvicationPageState extends State<InvicationPage> | ||
| 2159 | onTap: () async { | 2169 | onTap: () async { |
| 2160 | _getCallLog(); | 2170 | _getCallLog(); |
| 2161 | }, | 2171 | }, |
| 2162 | - child: Container( | ||
| 2163 | - // color: Colors.red, | ||
| 2164 | - // width: ScreenUtil().setWidth(64) * 2, | ||
| 2165 | - height: ScreenUtil().setWidth(48), | ||
| 2166 | - alignment: Alignment.centerLeft, | ||
| 2167 | - child: Text('通话记录', | ||
| 2168 | - style: TextStyle( | ||
| 2169 | - color: MyColours.color_515151, | ||
| 2170 | - fontSize: ScreenUtil().setSp(28), | ||
| 2171 | - )), | ||
| 2172 | - ), | 2172 | + child: Row(children: [ |
| 2173 | + Container( | ||
| 2174 | + // color: Colors.red, | ||
| 2175 | + // width: ScreenUtil().setWidth(64) * 2, | ||
| 2176 | + height: ScreenUtil().setWidth(48), | ||
| 2177 | + alignment: Alignment.centerLeft, | ||
| 2178 | + child: Text('通话记录', | ||
| 2179 | + style: TextStyle( | ||
| 2180 | + color: MyColours.color_515151, | ||
| 2181 | + fontSize: ScreenUtil().setSp(28), | ||
| 2182 | + )), | ||
| 2183 | + ), | ||
| 2184 | + HEmptyView(4), | ||
| 2185 | + Image.asset(Utils.getImgPath('quan_down_f'), | ||
| 2186 | + width: ScreenUtil().setWidth(28), | ||
| 2187 | + height: ScreenUtil().setWidth(28)), | ||
| 2188 | + ]), | ||
| 2173 | ), | 2189 | ), |
| 2174 | ], | 2190 | ], |
| 2175 | ) | 2191 | ) |
| @@ -2285,6 +2301,7 @@ class InvicationPageState extends State<InvicationPage> | @@ -2285,6 +2301,7 @@ class InvicationPageState extends State<InvicationPage> | ||
| 2285 | fontSize: ScreenUtil().setSp(28), | 2301 | fontSize: ScreenUtil().setSp(28), |
| 2286 | ), | 2302 | ), |
| 2287 | ), | 2303 | ), |
| 2304 | + HEmptyView(4), | ||
| 2288 | Image.asset(Utils.getImgPath('quan_down_f'), | 2305 | Image.asset(Utils.getImgPath('quan_down_f'), |
| 2289 | width: ScreenUtil().setWidth(28), | 2306 | width: ScreenUtil().setWidth(28), |
| 2290 | height: ScreenUtil().setWidth(28)), | 2307 | height: ScreenUtil().setWidth(28)), |
| @@ -2325,6 +2342,7 @@ class InvicationPageState extends State<InvicationPage> | @@ -2325,6 +2342,7 @@ class InvicationPageState extends State<InvicationPage> | ||
| 2325 | fontSize: ScreenUtil().setSp(28), | 2342 | fontSize: ScreenUtil().setSp(28), |
| 2326 | ), | 2343 | ), |
| 2327 | ), | 2344 | ), |
| 2345 | + HEmptyView(4), | ||
| 2328 | Image.asset(Utils.getImgPath('quan_down_f'), | 2346 | Image.asset(Utils.getImgPath('quan_down_f'), |
| 2329 | width: ScreenUtil().setWidth(28), | 2347 | width: ScreenUtil().setWidth(28), |
| 2330 | height: ScreenUtil().setWidth(28)), | 2348 | height: ScreenUtil().setWidth(28)), |
| @@ -3913,22 +3931,98 @@ class InvicationPageState extends State<InvicationPage> | @@ -3913,22 +3931,98 @@ class InvicationPageState extends State<InvicationPage> | ||
| 3913 | 3931 | ||
| 3914 | _getCallLog() async { | 3932 | _getCallLog() async { |
| 3915 | Iterable<CallLogEntry> result = await CallLog.query(); | 3933 | Iterable<CallLogEntry> result = await CallLog.query(); |
| 3916 | - _baseIndoProvider.userHistorys = []; | 3934 | + List<Picker.PickerItem<dynamic>> data = []; |
| 3917 | 3935 | ||
| 3918 | List<CallLogEntry> object = Utils.removeDuplicates(result.toList()); | 3936 | List<CallLogEntry> object = Utils.removeDuplicates(result.toList()); |
| 3919 | 3937 | ||
| 3920 | print(object); | 3938 | print(object); |
| 3939 | + | ||
| 3940 | + _baseIndoProvider.userHistorys = []; | ||
| 3941 | + showPhoneHistory = false; | ||
| 3942 | + // setState(() {}); | ||
| 3943 | + | ||
| 3921 | object.forEach((element) { | 3944 | object.forEach((element) { |
| 3922 | - UserHistoryEntity userHistoryEntity = | ||
| 3923 | - UserHistoryEntity(null, null, '', '', '', '', '', null); | ||
| 3924 | - userHistoryEntity.rname = element.name ?? ''; | ||
| 3925 | - userHistoryEntity.phone = element.number ?? ''; | ||
| 3926 | - _baseIndoProvider.userHistorys.add(userHistoryEntity); | 3945 | + _baseIndoProvider.userHistorys.add(UserHistoryEntity( |
| 3946 | + '', '', element.name ?? '', '1', element.number, '', '', '')); | ||
| 3947 | + | ||
| 3948 | + String title = ''; | ||
| 3949 | + title += ' ${element.number ?? ''}'; | ||
| 3950 | + if (element.name != null && element.name != '') { | ||
| 3951 | + title += ' ${element.name}'; | ||
| 3952 | + } | ||
| 3953 | + | ||
| 3954 | + String stateStr = ''; //状态 | ||
| 3955 | + | ||
| 3956 | + if (element.callType.name == 'incoming' || | ||
| 3957 | + element.callType.name == 'wifiIncoming' || | ||
| 3958 | + element.callType.name == 'answeredExternally') { | ||
| 3959 | + stateStr = ' 呼入'; | ||
| 3960 | + } else if (element.callType.name == 'outgoing' || | ||
| 3961 | + element.callType.name == 'wifiOutgoing' || | ||
| 3962 | + element.callType.name == 'voiceMail') { | ||
| 3963 | + stateStr = ' 呼出'; | ||
| 3964 | + } else if (element.callType.name == 'missed') { | ||
| 3965 | + stateStr = ' 未接'; | ||
| 3966 | + } else if (element.callType.name == 'rejected') { | ||
| 3967 | + stateStr = ' 拒接'; | ||
| 3968 | + } else if (element.callType.name == 'blocked') { | ||
| 3969 | + stateStr = ' 拦截'; | ||
| 3970 | + } | ||
| 3971 | + | ||
| 3972 | + String sunString = | ||
| 3973 | + Utils.formatCallLogFromMill(element.timestamp.toString()); | ||
| 3974 | + | ||
| 3975 | + data.add(Picker.PickerItem( | ||
| 3976 | + text: Row( | ||
| 3977 | + mainAxisAlignment: MainAxisAlignment.spaceBetween, | ||
| 3978 | + children: [ | ||
| 3979 | + Expanded( | ||
| 3980 | + child: Row( | ||
| 3981 | + children: [ | ||
| 3982 | + HEmptyView(30), | ||
| 3983 | + Text(title ?? '', | ||
| 3984 | + style: TextStyle( | ||
| 3985 | + fontSize: font(16), color: MyColours.color_515151)), | ||
| 3986 | + Expanded( | ||
| 3987 | + child: Text(stateStr ?? '', | ||
| 3988 | + style: TextStyle( | ||
| 3989 | + fontSize: font(16), | ||
| 3990 | + color: MyColours.color_26000000))), | ||
| 3991 | + ], | ||
| 3992 | + )), | ||
| 3993 | + Container( | ||
| 3994 | + margin: EdgeInsets.only(right: w(15)), | ||
| 3995 | + child: Text(sunString ?? '', | ||
| 3996 | + style: TextStyle( | ||
| 3997 | + fontSize: font(16), color: MyColours.color_515151))) | ||
| 3998 | + ], | ||
| 3999 | + ))); | ||
| 3927 | }); | 4000 | }); |
| 3928 | - if (object.length > 0) { | ||
| 3929 | - //有记录 | ||
| 3930 | - showPhoneHistory = true; | ||
| 3931 | - setState(() {}); | 4001 | + if (data.length > 0) { |
| 4002 | + //有记录,底部弹窗展示 | ||
| 4003 | + // showPhoneHistory = true; | ||
| 4004 | + // setState(() {}); | ||
| 4005 | + DialogUtil.showSelectCusmanWidgetDialog(context, data, (value) { | ||
| 4006 | + if (value != null) { | ||
| 4007 | + UserHistoryEntity userHistoryEntity = | ||
| 4008 | + _baseIndoProvider.userHistorys[value[0]]; | ||
| 4009 | + | ||
| 4010 | + sexStr = userHistoryEntity.sexStr; | ||
| 4011 | + | ||
| 4012 | + sexSelectIndex = sexList.indexOf(sexStr); | ||
| 4013 | + | ||
| 4014 | + _getIsMemberByPhone(userHistoryEntity.phone); | ||
| 4015 | + needHistory = true; | ||
| 4016 | + _showConfirmWidget(needHistory: true, index: value[0]); | ||
| 4017 | + } | ||
| 4018 | + }, title: '从通话记录选择客人电话', selecteds: [ | ||
| 4019 | + // _getFirSelected(hourAndMinute, data), | ||
| 4020 | + // _getSecSelected(hourAndMinute) | ||
| 4021 | + ]).then((value) { | ||
| 4022 | + print(value); | ||
| 4023 | + }); | ||
| 4024 | + } else { | ||
| 4025 | + Utils.showToast('暂无通话记录!'); | ||
| 3932 | } | 4026 | } |
| 3933 | } | 4027 | } |
| 3934 | 4028 | ||
| @@ -4000,7 +4094,9 @@ class InvicationPageState extends State<InvicationPage> | @@ -4000,7 +4094,9 @@ class InvicationPageState extends State<InvicationPage> | ||
| 4000 | _baseIndoProvider.nameController.text.endsWith(suffix)) { | 4094 | _baseIndoProvider.nameController.text.endsWith(suffix)) { |
| 4001 | return; | 4095 | return; |
| 4002 | } | 4096 | } |
| 4003 | - _baseIndoProvider.nameController.text = name + suffix; | 4097 | + if (name != '' && name != null) { |
| 4098 | + _baseIndoProvider.nameController.text = name + suffix??''; | ||
| 4099 | + } | ||
| 4004 | } | 4100 | } |
| 4005 | 4101 | ||
| 4006 | //姓名后缀 | 4102 | //姓名后缀 |
| @@ -1491,39 +1491,41 @@ class _MyCustomerListPageState extends State<MyCustomerListPage> | @@ -1491,39 +1491,41 @@ class _MyCustomerListPageState extends State<MyCustomerListPage> | ||
| 1491 | child: Column( | 1491 | child: Column( |
| 1492 | children: [ | 1492 | children: [ |
| 1493 | Expanded( | 1493 | Expanded( |
| 1494 | - child: Scrollbar( | ||
| 1495 | - isAlwaysShown: true, //设置滚动条常亮 | ||
| 1496 | - controller: _scrollCrl, //必须设置一个controller | ||
| 1497 | - | ||
| 1498 | - // ///添加进度条 | ||
| 1499 | - child: SingleChildScrollView( | ||
| 1500 | - controller: _scrollCrl, | ||
| 1501 | - // primary: true, | ||
| 1502 | - // reverse: true, | ||
| 1503 | - // physics: BouncingScrollPhysics(), | ||
| 1504 | - // padding: EdgeInsets.only( | ||
| 1505 | - // bottom: | ||
| 1506 | - // MediaQuery.of(context).viewInsets.bottom), | ||
| 1507 | - child: Column( | ||
| 1508 | - crossAxisAlignment: CrossAxisAlignment.start, | ||
| 1509 | - children: [ | ||
| 1510 | - VEmptyView(20), | ||
| 1511 | - // _managerWidget(), | ||
| 1512 | - // VEmptyView(30), | ||
| 1513 | - _activityWidget(state), | ||
| 1514 | - VEmptyView(40), | ||
| 1515 | - _labelWidget(state), | ||
| 1516 | - VEmptyView(40), | ||
| 1517 | - | ||
| 1518 | - // 消费 | ||
| 1519 | - | ||
| 1520 | - // _consume(state), | ||
| 1521 | - // VEmptyView(40), | ||
| 1522 | - _advancedFilterWidget(state) | ||
| 1523 | - ], | ||
| 1524 | - ), | ||
| 1525 | - )), | ||
| 1526 | - ), | 1494 | + child: |
| 1495 | + // Scrollbar( | ||
| 1496 | + // isAlwaysShown: true, //设置滚动条常亮 | ||
| 1497 | + // controller: _scrollCrl, //必须设置一个controller | ||
| 1498 | + | ||
| 1499 | + // // ///添加进度条 | ||
| 1500 | + // child: | ||
| 1501 | + SingleChildScrollView( | ||
| 1502 | + controller: _scrollCrl, | ||
| 1503 | + // primary: true, | ||
| 1504 | + // reverse: true, | ||
| 1505 | + // physics: BouncingScrollPhysics(), | ||
| 1506 | + // padding: EdgeInsets.only( | ||
| 1507 | + // bottom: | ||
| 1508 | + // MediaQuery.of(context).viewInsets.bottom), | ||
| 1509 | + child: Column( | ||
| 1510 | + crossAxisAlignment: CrossAxisAlignment.start, | ||
| 1511 | + children: [ | ||
| 1512 | + VEmptyView(20), | ||
| 1513 | + // _managerWidget(), | ||
| 1514 | + // VEmptyView(30), | ||
| 1515 | + _activityWidget(state), | ||
| 1516 | + VEmptyView(40), | ||
| 1517 | + _labelWidget(state), | ||
| 1518 | + VEmptyView(40), | ||
| 1519 | + | ||
| 1520 | + // 消费 | ||
| 1521 | + | ||
| 1522 | + // _consume(state), | ||
| 1523 | + // VEmptyView(40), | ||
| 1524 | + _advancedFilterWidget(state) | ||
| 1525 | + ], | ||
| 1526 | + ), | ||
| 1527 | + )), | ||
| 1528 | + // ), | ||
| 1527 | Row( | 1529 | Row( |
| 1528 | children: [ | 1530 | children: [ |
| 1529 | Container( | 1531 | Container( |
| @@ -1644,36 +1644,38 @@ class _CustomerListPageState extends State<CustomerListPage> | @@ -1644,36 +1644,38 @@ class _CustomerListPageState extends State<CustomerListPage> | ||
| 1644 | child: Column( | 1644 | child: Column( |
| 1645 | children: [ | 1645 | children: [ |
| 1646 | Expanded( | 1646 | Expanded( |
| 1647 | - child: Scrollbar( | ||
| 1648 | - isAlwaysShown: true, //设置滚动条常亮 | ||
| 1649 | - controller: _scrollCrl, //必须设置一个controller | ||
| 1650 | - | ||
| 1651 | - // ///添加进度条 | ||
| 1652 | - child: SingleChildScrollView( | ||
| 1653 | - controller: _scrollCrl, | ||
| 1654 | - // primary: true, | ||
| 1655 | - // reverse: true, | ||
| 1656 | - // physics: BouncingScrollPhysics(), | ||
| 1657 | - // padding: EdgeInsets.only( | ||
| 1658 | - // bottom: | ||
| 1659 | - // MediaQuery.of(context).viewInsets.bottom), | ||
| 1660 | - child: Column( | ||
| 1661 | - crossAxisAlignment: CrossAxisAlignment.start, | ||
| 1662 | - children: [ | ||
| 1663 | - VEmptyView(20), | ||
| 1664 | - _managerWidget(state), | ||
| 1665 | - VEmptyView(40), | ||
| 1666 | - _activityWidget(state), | ||
| 1667 | - VEmptyView(40), | ||
| 1668 | - _labelWidget(state), | ||
| 1669 | - VEmptyView(40), | ||
| 1670 | - // _consume(state), | ||
| 1671 | - // VEmptyView(40), | ||
| 1672 | - _advancedFilterWidget(state) | ||
| 1673 | - ], | ||
| 1674 | - ), | ||
| 1675 | - )), | ||
| 1676 | - ), | 1647 | + child: |
| 1648 | + // Scrollbar( | ||
| 1649 | + // isAlwaysShown: true, //设置滚动条常亮 | ||
| 1650 | + // controller: _scrollCrl, //必须设置一个controller | ||
| 1651 | + | ||
| 1652 | + // // ///添加进度条 | ||
| 1653 | + // child: | ||
| 1654 | + SingleChildScrollView( | ||
| 1655 | + controller: _scrollCrl, | ||
| 1656 | + // primary: true, | ||
| 1657 | + // reverse: true, | ||
| 1658 | + // physics: BouncingScrollPhysics(), | ||
| 1659 | + // padding: EdgeInsets.only( | ||
| 1660 | + // bottom: | ||
| 1661 | + // MediaQuery.of(context).viewInsets.bottom), | ||
| 1662 | + child: Column( | ||
| 1663 | + crossAxisAlignment: CrossAxisAlignment.start, | ||
| 1664 | + children: [ | ||
| 1665 | + VEmptyView(20), | ||
| 1666 | + _managerWidget(state), | ||
| 1667 | + VEmptyView(40), | ||
| 1668 | + _activityWidget(state), | ||
| 1669 | + VEmptyView(40), | ||
| 1670 | + _labelWidget(state), | ||
| 1671 | + VEmptyView(40), | ||
| 1672 | + // _consume(state), | ||
| 1673 | + // VEmptyView(40), | ||
| 1674 | + _advancedFilterWidget(state) | ||
| 1675 | + ], | ||
| 1676 | + ), | ||
| 1677 | + )), | ||
| 1678 | + // ), | ||
| 1677 | Row( | 1679 | Row( |
| 1678 | children: [ | 1680 | children: [ |
| 1679 | Container( | 1681 | Container( |
| @@ -63,6 +63,7 @@ import '../../utils/screen_util.dart'; | @@ -63,6 +63,7 @@ import '../../utils/screen_util.dart'; | ||
| 63 | import '../../widgets/loading.dart'; | 63 | import '../../widgets/loading.dart'; |
| 64 | import '../../widgets/special_text/my_extended_text_selection_controls.dart'; | 64 | import '../../widgets/special_text/my_extended_text_selection_controls.dart'; |
| 65 | import '../detail/notebook_detail_change_page_f.dart'; | 65 | import '../detail/notebook_detail_change_page_f.dart'; |
| 66 | +import 'package:flutter_picker/flutter_picker.dart' as Picker; | ||
| 66 | 67 | ||
| 67 | const scrollDuration = Duration(microseconds: 500); | 68 | const scrollDuration = Duration(microseconds: 500); |
| 68 | 69 | ||
| @@ -659,27 +660,159 @@ class TableManagerPageState extends State<TableManagerPage> { | @@ -659,27 +660,159 @@ class TableManagerPageState extends State<TableManagerPage> { | ||
| 659 | } | 660 | } |
| 660 | } | 661 | } |
| 661 | 662 | ||
| 663 | + // _getCallLog() async { | ||
| 664 | + // Iterable<CallLogEntry> result = await CallLog.query(); | ||
| 665 | + // _baseIndoProvider.userHistorys = []; | ||
| 666 | + | ||
| 667 | + // List<CallLogEntry> object = Utils.removeDuplicates(result.toList()); | ||
| 668 | + | ||
| 669 | + // print(object); | ||
| 670 | + // object.forEach((element) { | ||
| 671 | + // UserHistoryEntity userHistoryEntity = | ||
| 672 | + // UserHistoryEntity(null, null, '', '', '', '', '', null); | ||
| 673 | + // userHistoryEntity.rname = element.name ?? ''; | ||
| 674 | + // userHistoryEntity.phone = element.number ?? ''; | ||
| 675 | + // _baseIndoProvider.userHistorys.add(userHistoryEntity); | ||
| 676 | + // }); | ||
| 677 | + // if (object.length > 0) { | ||
| 678 | + // //有记录 | ||
| 679 | + // showPhoneHistory = true; | ||
| 680 | + // setState(() {}); | ||
| 681 | + // } | ||
| 682 | + // } | ||
| 683 | + | ||
| 662 | _getCallLog() async { | 684 | _getCallLog() async { |
| 663 | Iterable<CallLogEntry> result = await CallLog.query(); | 685 | Iterable<CallLogEntry> result = await CallLog.query(); |
| 664 | - _baseIndoProvider.userHistorys = []; | 686 | + List<Picker.PickerItem<dynamic>> data = []; |
| 665 | 687 | ||
| 666 | List<CallLogEntry> object = Utils.removeDuplicates(result.toList()); | 688 | List<CallLogEntry> object = Utils.removeDuplicates(result.toList()); |
| 667 | 689 | ||
| 668 | print(object); | 690 | print(object); |
| 691 | + | ||
| 692 | + _baseIndoProvider.userHistorys = []; | ||
| 693 | + showPhoneHistory = false; | ||
| 694 | + // setState(() {}); | ||
| 695 | + | ||
| 669 | object.forEach((element) { | 696 | object.forEach((element) { |
| 670 | - UserHistoryEntity userHistoryEntity = | ||
| 671 | - UserHistoryEntity(null, null, '', '', '', '', '', null); | ||
| 672 | - userHistoryEntity.rname = element.name ?? ''; | ||
| 673 | - userHistoryEntity.phone = element.number ?? ''; | ||
| 674 | - _baseIndoProvider.userHistorys.add(userHistoryEntity); | 697 | + _baseIndoProvider.userHistorys.add(UserHistoryEntity( |
| 698 | + '', '', element.name ?? '', '1', element.number, '', '', '')); | ||
| 699 | + | ||
| 700 | + String title = ''; | ||
| 701 | + title += ' ${element.number ?? ''}'; | ||
| 702 | + if (element.name != null && element.name != '') { | ||
| 703 | + title += ' ${element.name}'; | ||
| 704 | + } | ||
| 705 | + | ||
| 706 | + String stateStr = ''; //状态 | ||
| 707 | + | ||
| 708 | + if (element.callType.name == 'incoming' || | ||
| 709 | + element.callType.name == 'wifiIncoming' || | ||
| 710 | + element.callType.name == 'answeredExternally') { | ||
| 711 | + stateStr = ' 呼入'; | ||
| 712 | + } else if (element.callType.name == 'outgoing' || | ||
| 713 | + element.callType.name == 'wifiOutgoing' || | ||
| 714 | + element.callType.name == 'voiceMail') { | ||
| 715 | + stateStr = ' 呼出'; | ||
| 716 | + } else if (element.callType.name == 'missed') { | ||
| 717 | + stateStr = ' 未接'; | ||
| 718 | + } else if (element.callType.name == 'rejected') { | ||
| 719 | + stateStr = ' 拒接'; | ||
| 720 | + } else if (element.callType.name == 'blocked') { | ||
| 721 | + stateStr = ' 拦截'; | ||
| 722 | + } | ||
| 723 | + | ||
| 724 | + String sunString = | ||
| 725 | + Utils.formatCallLogFromMill(element.timestamp.toString()); | ||
| 726 | + | ||
| 727 | + data.add(Picker.PickerItem( | ||
| 728 | + text: Row( | ||
| 729 | + mainAxisAlignment: MainAxisAlignment.spaceBetween, | ||
| 730 | + children: [ | ||
| 731 | + Expanded( | ||
| 732 | + child: Row( | ||
| 733 | + children: [ | ||
| 734 | + HEmptyView(30), | ||
| 735 | + Text(title ?? '', | ||
| 736 | + style: TextStyle( | ||
| 737 | + fontSize: font(16), color: MyColours.color_515151)), | ||
| 738 | + Expanded( | ||
| 739 | + child: Text(stateStr ?? '', | ||
| 740 | + style: TextStyle( | ||
| 741 | + fontSize: font(16), | ||
| 742 | + color: MyColours.color_26000000))), | ||
| 743 | + ], | ||
| 744 | + )), | ||
| 745 | + Container( | ||
| 746 | + margin: EdgeInsets.only(right: w(15)), | ||
| 747 | + child: Text(sunString ?? '', | ||
| 748 | + style: TextStyle( | ||
| 749 | + fontSize: font(16), color: MyColours.color_515151))) | ||
| 750 | + ], | ||
| 751 | + ))); | ||
| 675 | }); | 752 | }); |
| 676 | - if (object.length > 0) { | ||
| 677 | - //有记录 | ||
| 678 | - showPhoneHistory = true; | ||
| 679 | - setState(() {}); | 753 | + if (data.length > 0) { |
| 754 | + //有记录,底部弹窗展示 | ||
| 755 | + // showPhoneHistory = true; | ||
| 756 | + // setState(() {}); | ||
| 757 | + DialogUtil.showSelectCusmanWidgetDialog(context, data, (value) { | ||
| 758 | + if (value != null) { | ||
| 759 | + _byValueToReqeust(value[0]); | ||
| 760 | + } | ||
| 761 | + }, title: '从通话记录选择客人电话', selecteds: [ | ||
| 762 | + // _getFirSelected(hourAndMinute, data), | ||
| 763 | + // _getSecSelected(hourAndMinute) | ||
| 764 | + ]).then((value) { | ||
| 765 | + print(value); | ||
| 766 | + }); | ||
| 767 | + } else { | ||
| 768 | + Utils.showToast('暂无通话记录!'); | ||
| 680 | } | 769 | } |
| 681 | } | 770 | } |
| 682 | 771 | ||
| 772 | + _byValueToReqeust(int index) { | ||
| 773 | + setState(() { | ||
| 774 | + sexStr = '先生'; | ||
| 775 | + showPhoneHistory = false; | ||
| 776 | + _baseIndoProvider.phoneController.text = | ||
| 777 | + _baseIndoProvider.userHistorys[index].phone != null | ||
| 778 | + ? _baseIndoProvider.userHistorys[index].phone | ||
| 779 | + : ''; | ||
| 780 | + // _homeEnterModel.nameController.text = | ||
| 781 | + // _homeEnterModel | ||
| 782 | + // .userHistorys[index].rname + | ||
| 783 | + // _nameSuffix(); | ||
| 784 | + for (var item in _baseIndoProvider.sexList) { | ||
| 785 | + item['select'] = false; | ||
| 786 | + if (item['title'] == _baseIndoProvider.userHistorys[index].sexStr) { | ||
| 787 | + item['select'] = true; | ||
| 788 | + sexSelectIndex = int.parse(item['code']) - 1; | ||
| 789 | + sexStr = _baseIndoProvider.userHistorys[index].sexStr; | ||
| 790 | + } | ||
| 791 | + } | ||
| 792 | + | ||
| 793 | + _addNameSuffix(_baseIndoProvider.userHistorys[index].rname, sexStr); | ||
| 794 | + if (_baseIndoProvider.userHistorys[index].rname == null || | ||
| 795 | + _baseIndoProvider.userHistorys[index].rname == '') { | ||
| 796 | + nameStr = _baseIndoProvider.nameController.text; | ||
| 797 | + | ||
| 798 | + if (nameStr.endsWith('女士')) { | ||
| 799 | + nameStr = nameStr.replaceAll('女士', ''); | ||
| 800 | + } | ||
| 801 | + if (nameStr.endsWith('先生')) { | ||
| 802 | + nameStr = nameStr.replaceAll('先生', ''); | ||
| 803 | + } | ||
| 804 | + if (nameStr.endsWith('公司')) { | ||
| 805 | + nameStr = nameStr.replaceAll('公司', ''); | ||
| 806 | + } | ||
| 807 | + } else { | ||
| 808 | + nameStr = _baseIndoProvider.userHistorys[index].rname; | ||
| 809 | + } | ||
| 810 | + | ||
| 811 | + _phoneNode.unfocus(); | ||
| 812 | + _baseIndoProvider.userHistorys.clear(); | ||
| 813 | + }); | ||
| 814 | + } | ||
| 815 | + | ||
| 683 | _getContactData() async { | 816 | _getContactData() async { |
| 684 | Contact contact = await _contactPicker.selectContactWithNative(); | 817 | Contact contact = await _contactPicker.selectContactWithNative(); |
| 685 | 818 | ||
| @@ -1360,75 +1493,76 @@ class TableManagerPageState extends State<TableManagerPage> { | @@ -1360,75 +1493,76 @@ class TableManagerPageState extends State<TableManagerPage> { | ||
| 1360 | itemBuilder: (context, index) { | 1493 | itemBuilder: (context, index) { |
| 1361 | return GestureDetector( | 1494 | return GestureDetector( |
| 1362 | onTap: () { | 1495 | onTap: () { |
| 1363 | - setState(() { | ||
| 1364 | - sexStr = '先生'; | ||
| 1365 | - showPhoneHistory = false; | ||
| 1366 | - _baseIndoProvider.phoneController | ||
| 1367 | - .text = _baseIndoProvider | ||
| 1368 | - .userHistorys[index] | ||
| 1369 | - .phone != | ||
| 1370 | - null | ||
| 1371 | - ? _baseIndoProvider | ||
| 1372 | - .userHistorys[index].phone | ||
| 1373 | - : ''; | ||
| 1374 | - // _homeEnterModel.nameController.text = | ||
| 1375 | - // _homeEnterModel | ||
| 1376 | - // .userHistorys[index].rname + | ||
| 1377 | - // _nameSuffix(); | ||
| 1378 | - for (var item in _baseIndoProvider | ||
| 1379 | - .sexList) { | ||
| 1380 | - item['select'] = false; | ||
| 1381 | - if (item['title'] == | ||
| 1382 | - _baseIndoProvider | ||
| 1383 | - .userHistorys[index] | ||
| 1384 | - .sexStr) { | ||
| 1385 | - item['select'] = true; | ||
| 1386 | - sexSelectIndex = | ||
| 1387 | - int.parse(item['code']) - | ||
| 1388 | - 1; | ||
| 1389 | - sexStr = _baseIndoProvider | ||
| 1390 | - .userHistorys[index] | ||
| 1391 | - .sexStr; | ||
| 1392 | - } | ||
| 1393 | - } | ||
| 1394 | - | ||
| 1395 | - _addNameSuffix( | ||
| 1396 | - _baseIndoProvider | ||
| 1397 | - .userHistorys[index] | ||
| 1398 | - .rname, | ||
| 1399 | - sexStr); | ||
| 1400 | - if (_baseIndoProvider | ||
| 1401 | - .userHistorys[index] | ||
| 1402 | - .rname == | ||
| 1403 | - null || | ||
| 1404 | - _baseIndoProvider | ||
| 1405 | - .userHistorys[index] | ||
| 1406 | - .rname == | ||
| 1407 | - '') { | ||
| 1408 | - nameStr = _baseIndoProvider | ||
| 1409 | - .nameController.text; | ||
| 1410 | - | ||
| 1411 | - if (nameStr.endsWith('女士')) { | ||
| 1412 | - nameStr = nameStr.replaceAll( | ||
| 1413 | - '女士', ''); | ||
| 1414 | - } | ||
| 1415 | - if (nameStr.endsWith('先生')) { | ||
| 1416 | - nameStr = nameStr.replaceAll( | ||
| 1417 | - '先生', ''); | ||
| 1418 | - } | ||
| 1419 | - if (nameStr.endsWith('公司')) { | ||
| 1420 | - nameStr = nameStr.replaceAll( | ||
| 1421 | - '公司', ''); | ||
| 1422 | - } | ||
| 1423 | - } else { | ||
| 1424 | - nameStr = _baseIndoProvider | ||
| 1425 | - .userHistorys[index].rname; | ||
| 1426 | - } | ||
| 1427 | - | ||
| 1428 | - _phoneNode.unfocus(); | ||
| 1429 | - _baseIndoProvider.userHistorys | ||
| 1430 | - .clear(); | ||
| 1431 | - }); | 1496 | + _byValueToReqeust(index); |
| 1497 | + // setState(() { | ||
| 1498 | + // sexStr = '先生'; | ||
| 1499 | + // showPhoneHistory = false; | ||
| 1500 | + // _baseIndoProvider.phoneController | ||
| 1501 | + // .text = _baseIndoProvider | ||
| 1502 | + // .userHistorys[index] | ||
| 1503 | + // .phone != | ||
| 1504 | + // null | ||
| 1505 | + // ? _baseIndoProvider | ||
| 1506 | + // .userHistorys[index].phone | ||
| 1507 | + // : ''; | ||
| 1508 | + // // _homeEnterModel.nameController.text = | ||
| 1509 | + // // _homeEnterModel | ||
| 1510 | + // // .userHistorys[index].rname + | ||
| 1511 | + // // _nameSuffix(); | ||
| 1512 | + // for (var item in _baseIndoProvider | ||
| 1513 | + // .sexList) { | ||
| 1514 | + // item['select'] = false; | ||
| 1515 | + // if (item['title'] == | ||
| 1516 | + // _baseIndoProvider | ||
| 1517 | + // .userHistorys[index] | ||
| 1518 | + // .sexStr) { | ||
| 1519 | + // item['select'] = true; | ||
| 1520 | + // sexSelectIndex = | ||
| 1521 | + // int.parse(item['code']) - | ||
| 1522 | + // 1; | ||
| 1523 | + // sexStr = _baseIndoProvider | ||
| 1524 | + // .userHistorys[index] | ||
| 1525 | + // .sexStr; | ||
| 1526 | + // } | ||
| 1527 | + // } | ||
| 1528 | + | ||
| 1529 | + // _addNameSuffix( | ||
| 1530 | + // _baseIndoProvider | ||
| 1531 | + // .userHistorys[index] | ||
| 1532 | + // .rname, | ||
| 1533 | + // sexStr); | ||
| 1534 | + // if (_baseIndoProvider | ||
| 1535 | + // .userHistorys[index] | ||
| 1536 | + // .rname == | ||
| 1537 | + // null || | ||
| 1538 | + // _baseIndoProvider | ||
| 1539 | + // .userHistorys[index] | ||
| 1540 | + // .rname == | ||
| 1541 | + // '') { | ||
| 1542 | + // nameStr = _baseIndoProvider | ||
| 1543 | + // .nameController.text; | ||
| 1544 | + | ||
| 1545 | + // if (nameStr.endsWith('女士')) { | ||
| 1546 | + // nameStr = nameStr.replaceAll( | ||
| 1547 | + // '女士', ''); | ||
| 1548 | + // } | ||
| 1549 | + // if (nameStr.endsWith('先生')) { | ||
| 1550 | + // nameStr = nameStr.replaceAll( | ||
| 1551 | + // '先生', ''); | ||
| 1552 | + // } | ||
| 1553 | + // if (nameStr.endsWith('公司')) { | ||
| 1554 | + // nameStr = nameStr.replaceAll( | ||
| 1555 | + // '公司', ''); | ||
| 1556 | + // } | ||
| 1557 | + // } else { | ||
| 1558 | + // nameStr = _baseIndoProvider | ||
| 1559 | + // .userHistorys[index].rname; | ||
| 1560 | + // } | ||
| 1561 | + | ||
| 1562 | + // _phoneNode.unfocus(); | ||
| 1563 | + // _baseIndoProvider.userHistorys | ||
| 1564 | + // .clear(); | ||
| 1565 | + // }); | ||
| 1432 | }, | 1566 | }, |
| 1433 | child: Container( | 1567 | child: Container( |
| 1434 | width: double.infinity, | 1568 | width: double.infinity, |
| @@ -5621,7 +5621,8 @@ class DialogUtil { | @@ -5621,7 +5621,8 @@ class DialogUtil { | ||
| 5621 | } | 5621 | } |
| 5622 | 5622 | ||
| 5623 | //显示消息弹框 | 5623 | //显示消息弹框 |
| 5624 | - static showMessageDialog(BuildContext context,CollectStoreProvider collectStoreProvider) async { | 5624 | + static showMessageDialog( |
| 5625 | + BuildContext context, CollectStoreProvider collectStoreProvider) async { | ||
| 5625 | MessageDialogModel messageModel = | 5626 | MessageDialogModel messageModel = |
| 5626 | Provider.of<MessageDialogModel>(context, listen: false); | 5627 | Provider.of<MessageDialogModel>(context, listen: false); |
| 5627 | if (messageModel.messages.isEmpty) return null; | 5628 | if (messageModel.messages.isEmpty) return null; |
| @@ -5743,8 +5744,8 @@ class DialogUtil { | @@ -5743,8 +5744,8 @@ class DialogUtil { | ||
| 5743 | ) | 5744 | ) |
| 5744 | : ListView.builder( | 5745 | : ListView.builder( |
| 5745 | itemBuilder: (context, index) { | 5746 | itemBuilder: (context, index) { |
| 5746 | - return MessageDialogItemF( | ||
| 5747 | - model.messages[index],collectStoreProvider); | 5747 | + return MessageDialogItemF(model.messages[index], |
| 5748 | + collectStoreProvider); | ||
| 5748 | }, | 5749 | }, |
| 5749 | itemCount: model.messages.length, | 5750 | itemCount: model.messages.length, |
| 5750 | shrinkWrap: true) | 5751 | shrinkWrap: true) |
| @@ -6723,6 +6724,101 @@ class DialogUtil { | @@ -6723,6 +6724,101 @@ class DialogUtil { | ||
| 6723 | }); | 6724 | }); |
| 6724 | } | 6725 | } |
| 6725 | 6726 | ||
| 6727 | + //显示通话记录UI | ||
| 6728 | + static Future<List<int>> showSelectCusmanWidgetDialog(BuildContext context, | ||
| 6729 | + List<PickerItem<dynamic>> data, ValueChanged valueChanged, | ||
| 6730 | + {List<int> selecteds, | ||
| 6731 | + Color cancelTextColor = const Color.fromRGBO(0, 0, 0, 0.6), | ||
| 6732 | + String title = '', | ||
| 6733 | + VoidCallback onCancel, | ||
| 6734 | + String cancelText = '取消'}) { | ||
| 6735 | + return Picker( | ||
| 6736 | + selecteds: selecteds, | ||
| 6737 | + adapter: PickerDataAdapter<dynamic>(data: data), | ||
| 6738 | + // adapter: PickerDataAdapter(data: [ | ||
| 6739 | + // PickerItem( | ||
| 6740 | + // text: Icon(Icons.add), | ||
| 6741 | + // value: Icons.add, | ||
| 6742 | + // ), | ||
| 6743 | + // PickerItem(text: Icon(Icons.title), value: Icons.title, children: [ | ||
| 6744 | + // PickerItem(text: Icon(Icons.more_vert)), | ||
| 6745 | + // PickerItem(text: Icon(Icons.ac_unit)), | ||
| 6746 | + // PickerItem(text: Icon(Icons.access_alarm)), | ||
| 6747 | + // PickerItem(text: Icon(Icons.account_balance)), | ||
| 6748 | + // ]), | ||
| 6749 | + // PickerItem(text: Icon(Icons.face), value: Icons.face, children: [ | ||
| 6750 | + // PickerItem(text: Icon(Icons.add_circle_outline)), | ||
| 6751 | + // PickerItem(text: Icon(Icons.add_a_photo)), | ||
| 6752 | + // PickerItem(text: Icon(Icons.access_time)), | ||
| 6753 | + // PickerItem(text: Icon(Icons.adjust)), | ||
| 6754 | + // ]), | ||
| 6755 | + // PickerItem( | ||
| 6756 | + // text: Icon(Icons.linear_scale), | ||
| 6757 | + // value: Icons.linear_scale, | ||
| 6758 | + // children: [ | ||
| 6759 | + // PickerItem(text: Icon(Icons.assistant_photo)), | ||
| 6760 | + // PickerItem(text: Icon(Icons.account_balance)), | ||
| 6761 | + // PickerItem(text: Icon(Icons.airline_seat_legroom_extra)), | ||
| 6762 | + // PickerItem(text: Icon(Icons.airport_shuttle)), | ||
| 6763 | + // PickerItem(text: Icon(Icons.settings_bluetooth)), | ||
| 6764 | + // ]), | ||
| 6765 | + // PickerItem(text: Icon(Icons.close), value: Icons.close), | ||
| 6766 | + // ]), | ||
| 6767 | + height: ScreenUtil().setWidth(480), | ||
| 6768 | + itemExtent: ScreenUtil().setWidth(80), | ||
| 6769 | + hideHeader: false, | ||
| 6770 | + diameterRatio: 1, | ||
| 6771 | + // textScaleFactor: 20, | ||
| 6772 | + // squeeze:1.4, | ||
| 6773 | + // magnification:0.1, | ||
| 6774 | + headerDecoration: BoxDecoration( | ||
| 6775 | + color: MyColours.color_ffffff, | ||
| 6776 | + border: Border( | ||
| 6777 | + bottom: BorderSide( | ||
| 6778 | + width: ScreenUtil().setWidth(2), | ||
| 6779 | + color: MyColours.color_E7E7E7), | ||
| 6780 | + )), | ||
| 6781 | + title: Text( | ||
| 6782 | + title, | ||
| 6783 | + style: TextStyle( | ||
| 6784 | + fontWeight: FontWeight.bold, | ||
| 6785 | + color: MyColours.color_515151, | ||
| 6786 | + fontSize: ScreenUtil().setSp(32)), | ||
| 6787 | + ), | ||
| 6788 | + cancelText: cancelText, | ||
| 6789 | + cancelTextStyle: | ||
| 6790 | + TextStyle(color: cancelTextColor, fontSize: ScreenUtil().setSp(32)), | ||
| 6791 | + confirmText: "确定", | ||
| 6792 | + confirmTextStyle: TextStyle( | ||
| 6793 | + color: MyColours.color_438E93, fontSize: ScreenUtil().setSp(32)), | ||
| 6794 | + selectedTextStyle: TextStyle( | ||
| 6795 | + color: MyColours.color_515151, fontSize: ScreenUtil().setSp(32)), | ||
| 6796 | + textStyle: TextStyle( | ||
| 6797 | + color: Color.fromRGBO(0, 0, 0, 0.26), | ||
| 6798 | + fontSize: ScreenUtil().setSp(32)), | ||
| 6799 | + selectionOverlay: Container( | ||
| 6800 | + height: ScreenUtil().setWidth(80), | ||
| 6801 | + decoration: BoxDecoration( | ||
| 6802 | + border: Border( | ||
| 6803 | + bottom: BorderSide( | ||
| 6804 | + width: ScreenUtil().setWidth(2), | ||
| 6805 | + color: Colors.transparent), | ||
| 6806 | + top: BorderSide( | ||
| 6807 | + width: ScreenUtil().setWidth(2), | ||
| 6808 | + color: Colors.transparent))), | ||
| 6809 | + ), | ||
| 6810 | + onCancel: onCancel, | ||
| 6811 | + onConfirm: (Picker picker, List value) { | ||
| 6812 | + print(value.toString()); | ||
| 6813 | + if (valueChanged != null) { | ||
| 6814 | + valueChanged(value); | ||
| 6815 | + } | ||
| 6816 | + }).showModal<List<int>>(context).then((value) { | ||
| 6817 | + LogUtil.v("value:${value.toString()}"); | ||
| 6818 | + return value; | ||
| 6819 | + }); | ||
| 6820 | + } | ||
| 6821 | + | ||
| 6726 | //显示选择客户经理弹框 | 6822 | //显示选择客户经理弹框 |
| 6727 | static Future<List<int>> showSelectCusmanDialog( | 6823 | static Future<List<int>> showSelectCusmanDialog( |
| 6728 | BuildContext context, List<dynamic> data, ValueChanged valueChanged, | 6824 | BuildContext context, List<dynamic> data, ValueChanged valueChanged, |
| @@ -6733,7 +6829,7 @@ class DialogUtil { | @@ -6733,7 +6829,7 @@ class DialogUtil { | ||
| 6733 | String cancelText = '取消'}) { | 6829 | String cancelText = '取消'}) { |
| 6734 | return Picker( | 6830 | return Picker( |
| 6735 | selecteds: selecteds, | 6831 | selecteds: selecteds, |
| 6736 | - adapter: PickerDataAdapter<String>(pickerdata: data), | 6832 | + adapter: PickerDataAdapter<String>(pickerData: data), |
| 6737 | height: ScreenUtil().setWidth(480), | 6833 | height: ScreenUtil().setWidth(480), |
| 6738 | hideHeader: false, | 6834 | hideHeader: false, |
| 6739 | headerDecoration: BoxDecoration( | 6835 | headerDecoration: BoxDecoration( |
| @@ -6876,7 +6972,7 @@ class DialogUtil { | @@ -6876,7 +6972,7 @@ class DialogUtil { | ||
| 6876 | // changeToFirst: true, | 6972 | // changeToFirst: true, |
| 6877 | looping: true, | 6973 | looping: true, |
| 6878 | selecteds: selecteds, | 6974 | selecteds: selecteds, |
| 6879 | - adapter: PickerDataAdapter<String>(pickerdata: data), | 6975 | + adapter: PickerDataAdapter<String>(pickerData: data), |
| 6880 | height: ScreenUtil().setWidth(480), | 6976 | height: ScreenUtil().setWidth(480), |
| 6881 | hideHeader: false, | 6977 | hideHeader: false, |
| 6882 | builderHeader: (BuildContext context) { | 6978 | builderHeader: (BuildContext context) { |
| @@ -198,6 +198,30 @@ class Utils { | @@ -198,6 +198,30 @@ class Utils { | ||
| 198 | // | 198 | // |
| 199 | 199 | ||
| 200 | //时间转换 | 200 | //时间转换 |
| 201 | + static String formatCallLogFromMill(String datestr) { | ||
| 202 | + String date = ''; | ||
| 203 | + DateTime _strtimes = DateTime.fromMillisecondsSinceEpoch(int.parse( | ||
| 204 | + datestr)); //首先先将字符串格式的时间转为DateTime类型,因为millisecondsSinceEpoch方法转换要求为该格式 | ||
| 205 | + | ||
| 206 | + DateTime dateNow = DateTime.now(); | ||
| 207 | + | ||
| 208 | + if (Utils.isOneDay(_strtimes, dateNow)) { | ||
| 209 | + //今天 | ||
| 210 | + date = DateUtil.formatDate(_strtimes, format: DateFormats.h_m); | ||
| 211 | + } else if (Utils.isOneDay(_strtimes, dateNow.add(Duration(days: -1)))) { | ||
| 212 | + date = "昨天"; | ||
| 213 | + } else if (Utils.isOneDay(_strtimes, dateNow.add(Duration(days: 2)))) { | ||
| 214 | + date = "后天 "; | ||
| 215 | + } else { | ||
| 216 | + date = Utils.addZeroNumber(_strtimes.month) + | ||
| 217 | + "月" + | ||
| 218 | + Utils.addZeroNumber(_strtimes.day) + | ||
| 219 | + "日"; | ||
| 220 | + } | ||
| 221 | + return date; | ||
| 222 | + } | ||
| 223 | + | ||
| 224 | + //时间转换 | ||
| 201 | static String formatFromMill(String datestr) { | 225 | static String formatFromMill(String datestr) { |
| 202 | String date = ''; | 226 | String date = ''; |
| 203 | DateTime _strtimes = DateTime.fromMillisecondsSinceEpoch( | 227 | DateTime _strtimes = DateTime.fromMillisecondsSinceEpoch( |
| 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/res/colors.dart'; | 3 | import 'package:one_key/res/colors.dart'; |
| 4 | +import 'package:one_key/utils/utils.dart'; | ||
| 5 | + | ||
| 6 | +import '../utils/screen_util.dart'; | ||
| 4 | 7 | ||
| 5 | class RowMultiText extends StatelessWidget { | 8 | class RowMultiText extends StatelessWidget { |
| 6 | final String title; | 9 | final String title; |
| @@ -8,10 +11,14 @@ class RowMultiText extends StatelessWidget { | @@ -8,10 +11,14 @@ class RowMultiText extends StatelessWidget { | ||
| 8 | final TextAlign textAlign; | 11 | final TextAlign textAlign; |
| 9 | final Color textColor; | 12 | final Color textColor; |
| 10 | final Color bgColor; | 13 | final Color bgColor; |
| 14 | + final Color textColorR; | ||
| 15 | + final String imageName; | ||
| 11 | RowMultiText(this.title, this.content, | 16 | RowMultiText(this.title, this.content, |
| 12 | {this.textAlign = TextAlign.right, | 17 | {this.textAlign = TextAlign.right, |
| 13 | this.textColor = MyColours.color_828282, | 18 | this.textColor = MyColours.color_828282, |
| 14 | - this.bgColor = MyColours.color_ffffff}); | 19 | + this.textColorR = MyColours.color_353535, |
| 20 | + this.bgColor = MyColours.color_ffffff, | ||
| 21 | + this.imageName}); | ||
| 15 | 22 | ||
| 16 | @override | 23 | @override |
| 17 | Widget build(BuildContext context) { | 24 | Widget build(BuildContext context) { |
| @@ -22,6 +29,7 @@ class RowMultiText extends StatelessWidget { | @@ -22,6 +29,7 @@ class RowMultiText extends StatelessWidget { | ||
| 22 | alignment: Alignment.center, | 29 | alignment: Alignment.center, |
| 23 | child: Row( | 30 | child: Row( |
| 24 | crossAxisAlignment: CrossAxisAlignment.center, | 31 | crossAxisAlignment: CrossAxisAlignment.center, |
| 32 | + mainAxisAlignment: MainAxisAlignment.spaceBetween, | ||
| 25 | children: <Widget>[ | 33 | children: <Widget>[ |
| 26 | Align( | 34 | Align( |
| 27 | alignment: Alignment.centerLeft, | 35 | alignment: Alignment.centerLeft, |
| @@ -33,15 +41,26 @@ class RowMultiText extends StatelessWidget { | @@ -33,15 +41,26 @@ class RowMultiText extends StatelessWidget { | ||
| 33 | ), | 41 | ), |
| 34 | Expanded( | 42 | Expanded( |
| 35 | child: Container( | 43 | child: Container( |
| 36 | - alignment: Alignment.centerRight, | ||
| 37 | - margin: EdgeInsets.only(left: ScreenUtil().setWidth(20)), | ||
| 38 | - child: Text(content, | ||
| 39 | - style: TextStyle( | ||
| 40 | - color: MyColours.color_353535, | ||
| 41 | - fontSize: ScreenUtil().setSp(30)), | ||
| 42 | - softWrap: true, | ||
| 43 | - textAlign: this.textAlign), | ||
| 44 | - ), | 44 | + alignment: Alignment.centerRight, |
| 45 | + margin: EdgeInsets.only(left: ScreenUtil().setWidth(20)), | ||
| 46 | + child: Row( | ||
| 47 | + mainAxisAlignment: MainAxisAlignment.end, | ||
| 48 | + children: [ | ||
| 49 | + if (imageName != null) | ||
| 50 | + Container( | ||
| 51 | + margin: EdgeInsets.only(right: w(2)), | ||
| 52 | + child: Image.asset( | ||
| 53 | + Utils.getImgPath(imageName), | ||
| 54 | + width: w(20), | ||
| 55 | + )), | ||
| 56 | + Text(content, | ||
| 57 | + style: TextStyle( | ||
| 58 | + color: textColorR, | ||
| 59 | + fontSize: ScreenUtil().setSp(30)), | ||
| 60 | + softWrap: true, | ||
| 61 | + textAlign: this.textAlign), | ||
| 62 | + ], | ||
| 63 | + )), | ||
| 45 | ) | 64 | ) |
| 46 | ], | 65 | ], |
| 47 | ), | 66 | ), |
| @@ -598,7 +598,7 @@ packages: | @@ -598,7 +598,7 @@ packages: | ||
| 598 | name: flutter_picker | 598 | name: flutter_picker |
| 599 | url: "https://pub.flutter-io.cn" | 599 | url: "https://pub.flutter-io.cn" |
| 600 | source: hosted | 600 | source: hosted |
| 601 | - version: "2.0.3" | 601 | + version: "2.1.0" |
| 602 | flutter_plugin_android_lifecycle: | 602 | flutter_plugin_android_lifecycle: |
| 603 | dependency: transitive | 603 | dependency: transitive |
| 604 | description: | 604 | description: |
| @@ -93,7 +93,7 @@ dependencies: | @@ -93,7 +93,7 @@ dependencies: | ||
| 93 | # url_launcher: ^5.4.2 | 93 | # url_launcher: ^5.4.2 |
| 94 | url_launcher: ^6.0.9 | 94 | url_launcher: ^6.0.9 |
| 95 | # 滚轮选择器 | 95 | # 滚轮选择器 |
| 96 | - flutter_picker: ^2.0.3 | 96 | + flutter_picker: ^2.1.0 |
| 97 | # 网络状态 | 97 | # 网络状态 |
| 98 | # connectivity: ^0.4.8 | 98 | # connectivity: ^0.4.8 |
| 99 | connectivity: ^3.0.6 | 99 | connectivity: ^3.0.6 |
-
Please register or login to post a comment