|
|
|
|
@ -24,6 +24,7 @@ import 'package:test_sa/views/widgets/equipment/device_button.dart';
|
|
|
|
|
import 'package:test_sa/views/widgets/images/multi_image_picker.dart';
|
|
|
|
|
import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
|
|
|
|
|
import 'package:test_sa/views/widgets/sound/record_sound.dart';
|
|
|
|
|
import 'package:test_sa/views/widgets/sound/sound_player.dart';
|
|
|
|
|
import 'package:test_sa/views/widgets/speech_to_text/speech_to_text.dart';
|
|
|
|
|
import 'package:test_sa/views/widgets/status/service_request/service_request_defect_types_mune.dart';
|
|
|
|
|
import 'package:test_sa/views/widgets/status/service_request/service_request_priority_mune.dart';
|
|
|
|
|
@ -79,6 +80,10 @@ class CreateRequestPageState extends State<CreateRequestPage> {
|
|
|
|
|
super.initState();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
getServiceRequestById(String id) async {
|
|
|
|
|
await _serviceRequestsProvider.getServiceRequestById(requestId: id) ?? "";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
void dispose() {
|
|
|
|
|
_maintenanceController.dispose();
|
|
|
|
|
@ -86,6 +91,11 @@ class CreateRequestPageState extends State<CreateRequestPage> {
|
|
|
|
|
super.dispose();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool _isLocalUrl(String url) {
|
|
|
|
|
if (url?.isEmpty != false) return false;
|
|
|
|
|
return url.startsWith("/") || url.startsWith("file://") || url.substring(1).startsWith(':\\');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
|
_height = MediaQuery.of(context).size.height;
|
|
|
|
|
@ -93,6 +103,7 @@ class CreateRequestPageState extends State<CreateRequestPage> {
|
|
|
|
|
_settingProvider = Provider.of<SettingProvider>(context);
|
|
|
|
|
_serviceRequestsProvider = Provider.of<ServiceRequestsProvider>(context);
|
|
|
|
|
_subtitle = AppLocalization.of(context).subtitle;
|
|
|
|
|
|
|
|
|
|
return Scaffold(
|
|
|
|
|
key: _scaffoldKey,
|
|
|
|
|
body: SafeArea(
|
|
|
|
|
@ -316,12 +327,17 @@ class CreateRequestPageState extends State<CreateRequestPage> {
|
|
|
|
|
enable: widget.serviceRequest == null ? true : false,
|
|
|
|
|
),
|
|
|
|
|
12.height,
|
|
|
|
|
RecordSound(
|
|
|
|
|
onRecord: (audio) {
|
|
|
|
|
_serviceRequest.audio = audio;
|
|
|
|
|
},
|
|
|
|
|
enabled: widget.serviceRequest == null ? true : false,
|
|
|
|
|
),
|
|
|
|
|
if (_serviceRequest.audio?.isNotEmpty == true)
|
|
|
|
|
ASoundPlayer(
|
|
|
|
|
audio: _serviceRequest.audio,
|
|
|
|
|
)
|
|
|
|
|
else
|
|
|
|
|
RecordSound(
|
|
|
|
|
onRecord: (audio) {
|
|
|
|
|
_serviceRequest.audio = audio;
|
|
|
|
|
},
|
|
|
|
|
enabled: widget.serviceRequest == null ? true : false,
|
|
|
|
|
),
|
|
|
|
|
12.height,
|
|
|
|
|
if (widget.serviceRequest != null)
|
|
|
|
|
ATextFormField(
|
|
|
|
|
@ -364,8 +380,10 @@ class CreateRequestPageState extends State<CreateRequestPage> {
|
|
|
|
|
setState(() {});
|
|
|
|
|
_serviceRequest.devicePhotos = _deviceImages.map((e) => "${e.path.split("/").last}|${base64Encode(e.readAsBytesSync())}").toList();
|
|
|
|
|
if (_serviceRequest.audio != null) {
|
|
|
|
|
final file = File(_serviceRequest.audio);
|
|
|
|
|
_serviceRequest.audio = "${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}";
|
|
|
|
|
if (_isLocalUrl(_serviceRequest.audio)) {
|
|
|
|
|
final File file = File(_serviceRequest.audio);
|
|
|
|
|
_serviceRequest.audio = "${file.path.split("/").last}|${base64Encode(file.readAsBytesSync())}";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
int status = 0;
|
|
|
|
|
if (widget.serviceRequest == null) {
|
|
|
|
|
|