import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_translate/generated/assets.dart'; import 'package:flutter_translate/manager/translate.dart'; import 'package:get/get.dart'; class SpeakAlert extends StatelessWidget { const SpeakAlert({ super.key, required this.isListening, required this.onTap, }); final Rx isListening; final Function() onTap; @override Widget build(BuildContext context) { return Stack( alignment: Alignment.bottomCenter, children: [ Positioned( bottom: 320.w, child: Row( children: [ Image.asset( Assets.imagesRabbitEar, width: 38.w, height: 59.w, ), 4.horizontalSpace, Image.asset( Assets.imagesRabbitEar, width: 38.w, height: 59.w, ), ], ), ), Container( width: MediaQuery.of(context).size.width, height: 340.w, padding: const EdgeInsets.symmetric(horizontal: 10).w, clipBehavior: Clip.antiAlias, decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.only( topLeft: Radius.circular(20.r), topRight: Radius.circular(20.r), ), ), child: Column( children: [ Image.asset( Assets.imagesRabbitFace, width: 215.w, height: 155.w, // color: Colors.white, ), 4.horizontalSpace, Column( children: [ Obx(() { return Visibility( visible: isListening.value, child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Text( 'Please speak ', style: TextStyle( color: const Color(0xff999999), fontSize: 16.sp, fontWeight: FontWeight.w500, ), ), Flexible( child: Text( Translate().fromLanguageEntity.value.name, maxLines: 2, overflow: TextOverflow.ellipsis, style: TextStyle( color: Colors.black, fontSize: 16.sp, fontWeight: FontWeight.w500, ), ), ), ], ), ); }), Obx(() { return Text( isListening.value ? 'I am listening, Click the button to end and translate' : 'Click the button to start speaking', maxLines: 2, overflow: TextOverflow.ellipsis, textAlign: TextAlign.center, style: TextStyle( color: const Color(0xff999999), fontSize: 16.sp, fontWeight: FontWeight.w500, ), ); }), ], ), 20.verticalSpace, ClipOval( child: GestureDetector( onTap: onTap, child: Container( width: 60.w, height: 60.w, color: const Color(0xff87ECB3), child: Obx(() { return Icon( isListening.value ? Icons.pause : Icons.mic, color: Colors.white, size: 36, ); }), ), ), ), ], ), ), ], ); } }