// import 'package:flutter/material.dart';
// import 'package:fluttertoast/fluttertoast.dart';
// import 'package:provider/provider.dart';
// import 'package:speech_to_text/speech_recognition_error.dart';
// import 'package:speech_to_text/speech_recognition_result.dart';
// import 'package:speech_to_text/speech_to_text.dart';
// import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
// import 'package:test_sa/extensions/context_extension.dart';
// import 'package:test_sa/new_views/app_style/app_color.dart';
// import 'package:test_sa/new_views/app_style/app_text_style.dart';
// import 'package:test_sa/views/app_style/sizing.dart';
// import 'package:test_sa/views/widgets/buttons/app_icon_button2.dart';
// import 'package:test_sa/views/widgets/titles/app_sub_title.dart';
//
// class SpeechToTextButton extends StatefulWidget {
//   final TextEditingController controller;
//   final bool mini;
//   final bool enabled;
//
//   const SpeechToTextButton({Key? key, this.controller, this.mini = false, this.enabled = true}) : super(key: key);
//
//   @override
//   _SpeechToTextButtonState createState() => _SpeechToTextButtonState();
// }
//
// class _SpeechToTextButtonState extends State<SpeechToTextButton> {
//   bool _speechEnabled = false;
//   SettingProvider _settingProvider;
//   final SpeechToText _speechToText = SpeechToText();
//
//   /// This has to happen only once per app
//   void _initSpeech() async {
//     _speechEnabled = await _speechToText.initialize(
//       onError: (SpeechRecognitionError error) async {
//         Fluttertoast.showToast(msg: "failed to convert text to speech");
//         setState(() {});
//       },
//     );
//   }
//
//   /// Each time to start a speech recognition session
//   void _startListening() async {
//     _speechEnabled = _speechToText.isAvailable;
//     if (_speechToText.isListening) {
//       Fluttertoast.showToast(msg: "Currently in use");
//       return;
//     }
//     if (!_speechEnabled) return;
//     await _speechToText.listen(
//         onResult: (SpeechRecognitionResult result) {
//           widget.controller.text = result.recognizedWords;
//           setState(() {});
//         },
//         localeId: _settingProvider.speechToText);
//     setState(() {});
//   }
//
//   /// Manually stop the active speech recognition session
//   /// Note that there are also timeouts that each platform enforces
//   /// and the SpeechToText plugin supports setting timeouts on the
//   /// listen method.
//   void _stopListening() async {
//     await _speechToText.stop();
//     setState(() {});
//   }
//
//   @override
//   void initState() {
//     _initSpeech();
//     widget.controller.addListener(() {
//       setState(() {});
//     });
//     super.initState();
//   }
//
//   @override
//   void setState(VoidCallback fn) {
//     if (!mounted) return;
//     super.setState(fn);
//   }
//
//   @override
//   Widget build(BuildContext context) {
//     _settingProvider = Provider.of<SettingProvider>(context);
//     return Container(
//       padding: const EdgeInsets.only(left: 12, right: 12),
//       decoration: BoxDecoration(
//         color: context.isDark && (widget.enabled == false)
//             ? AppColor.neutral50
//             : (widget.enabled == false)
//                 ? AppColor.neutral40
//                 : AppColor.background(context),
//         borderRadius: BorderRadius.circular(10),
//         boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.05), blurRadius: 10)],
//       ),
//       child: Row(
//         children: [
//           widget.mini
//               ? const SizedBox.shrink()
//               : Text(
//                   "Speech To Text",
//                   style: Theme.of(context).textTheme.bodyLarge,
//                 ),
//           widget.controller.text.isNotEmpty && widget.enabled
//               ? AIconButton2(
//                   iconData: Icons.delete,
//                   color: context.isDark ? Colors.white : Colors.black87,
//                   onPressed: () {
//                     widget.controller.clear();
//                     setState(() {});
//                   },
//                 )
//               : const SizedBox.shrink(),
//           const Spacer(),
//           TextButton(
//               onPressed: widget.enabled
//                   ? () {
//                       if (_speechToText.isListening) return;
//
//                       if (_settingProvider.speechToText == "ar") {
//                         _settingProvider.setSpeechToText("en");
//                       } else {
//                         _settingProvider.setSpeechToText("ar");
//                       }
//                     }
//                   : null,
//               child: Text(_settingProvider.speechToText)),
//           GestureDetector(
//             child: _speechToText.isListening
//                 ? const Icon(
//                     Icons.fiber_manual_record,
//                     color: Colors.red,
//                   )
//                 : Icon(
//                     Icons.mic,
//                     color: Theme.of(context).colorScheme.primary,
//                   ),
//             onTap: widget.enabled
//                 ? () async {
//                     if (!_speechEnabled) {
//                       Fluttertoast.showToast(msg: "microphone not available");
//                       return;
//                     }
//                     if (_speechToText.isListening) {
//                       _stopListening();
//                     } else {
//                       _startListening();
//                     }
//                   }
//                 : null,
//           ),
//         ],
//       ),
//     );
//   }
// }
