import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/provider/hmg_connection_provider.dart'; import 'package:provider/provider.dart'; import 'package:shimmer/shimmer.dart'; class HmgConnectivityButton extends StatefulWidget { const HmgConnectivityButton({Key? key}) : super(key: key); @override State createState() => _HmgConnectivityButtonState(); } class _HmgConnectivityButtonState extends State with SingleTickerProviderStateMixin { late Animation animation; late AnimationController controller; @override void initState() { super.initState(); controller = AnimationController( duration: const Duration(milliseconds: 1500), vsync: this, ); CurvedAnimation curve = CurvedAnimation(parent: controller, curve: Curves.linear); animation = ColorTween(begin: Colors.transparent, end:MyColors.gradiantStartColor).animate(curve); animation.addStatusListener((status) { if (status == AnimationStatus.completed) { controller.reverse(); } else if (status == AnimationStatus.dismissed) { controller.forward(); } setState(() {}); }); controller.forward(); } @override Widget build(BuildContext context) { // Provider.of(context, listen: false).checkHmgNetworkConnectivity(); return Row( children: [ Consumer( builder: (_, HmgConnectionProvider provider, __) { return AnimatedBuilder( animation: animation, builder: (BuildContext context, Widget? child) { return Container( height: 45, decoration: BoxDecoration( borderRadius: BorderRadius.circular(200.0), gradient: const LinearGradient( transform: GradientRotation(.83), begin: Alignment.topRight, end: Alignment.bottomLeft, colors: [ MyColors.gradiantEndColor, MyColors.gradiantStartColor, ], ), ), child: Container( padding: const EdgeInsets.only(left: 12, right: 12), decoration: BoxDecoration( borderRadius: BorderRadius.circular(200.0), color: animation.value, ), child: InkWell( onTap: () async { if (provider.isConnectedToHMG) { Utils.showLoading(context); await provider.closeWifiRequest(); Utils.hideLoading(context); } else { Utils.showLoading(context); await provider.connectWithHmgNetwork(); Utils.hideLoading(context); } }, child: Row( children: [ Icon( Icons.wifi, color: provider.isConnectedToHMG ? Colors.white : Colors.grey[700], size: 16, ), 8.width, provider.isConnectedToHMG ? LocaleKeys.connectedHmgWifi.tr().toText12(color: Colors.white) : LocaleKeys.connectHmgWifi.tr().toText12(color: Colors.white), ], ), ), ), ); }); }, ), ], ); } @override void dispose() { controller.dispose(); super.dispose(); } }