Solian/lib/widgets/current_state_action.dart
2024-07-25 01:18:47 +08:00

49 lines
1.6 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_animate/flutter_animate.dart';
import 'package:get/get.dart';
import 'package:solian/providers/websocket.dart';
import 'package:solian/providers/auth.dart';
class BackgroundStateWidget extends StatelessWidget {
const BackgroundStateWidget({super.key});
@override
Widget build(BuildContext context) {
final AuthProvider auth = Get.find();
final WebSocketProvider ws = Get.find();
return Obx(() {
final disconnected = ws.isConnected.isFalse;
final connecting = ws.isConnecting.isTrue;
return Row(children: [
if (auth.isAuthorized.isTrue && disconnected && !connecting)
IconButton(
tooltip: [
if (ws.isConnected.isFalse)
'Lost Connection with Solar Network...',
].join('\n'),
icon: const Icon(Icons.wifi_off)
.animate(onPlay: (c) => c.repeat())
.fadeIn(duration: 800.ms)
.then()
.fadeOut(duration: 800.ms),
onPressed: () {
if (ws.isConnected.isFalse) ws.connect();
},
),
if (auth.isAuthorized.isTrue && connecting)
IconButton(
tooltip: [
if (ws.isConnecting.isTrue) 'Waiting Solar Network Connection...',
].join('\n'),
icon: const Icon(Icons.sync)
.animate(onPlay: (c) => c.repeat())
.rotate(duration: 1850.ms, begin: 1, end: 0),
onPressed: () {},
),
]);
});
}
}