smartfarming-mobile/agrilink_vocpro/lib/features/control/provider/control_provider.dart

95 lines
2.0 KiB
Dart

import 'package:agrilink_vocpro/core/state/result_state.dart';
import 'package:agrilink_vocpro/domain/service/mqtt_service.dart';
import 'package:flutter/material.dart';
class ControlProvider extends ChangeNotifier {
bool _control_1 = false;
bool _control_2 = false;
bool _control_3 = false;
bool _control_4 = false;
bool _control_5 = false;
bool _control_6 = false;
// Getters
bool get control_1 => _control_1;
bool get control_2 => _control_2;
bool get control_3 => _control_3;
bool get control_4 => _control_4;
bool get control_5 => _control_5;
bool get control_6 => _control_6;
ControlProvider() {
connectMqtt();
}
ResultState mqttState = ResultState.initial;
// Koneksi MQTT
Future<void> connectMqtt() async {
mqttState = ResultState.loading;
try {
final result = await MQTTService().setupMqtt();
if (result == ResultState.hasData) {
mqttState = result;
print('Connected to MQTT');
} else {
mqttState = ResultState.error;
print('Failed to connect to MQTT');
}
} catch (e) {
print(e);
}
notifyListeners();
}
Future<void> disconnectMqtt() async {
try {
final result = await MQTTService().disconnectMqtt();
if (result == ResultState.hasData) print('Disconnected from MQTT');
} catch (e) {
rethrow;
}
notifyListeners();
}
Future<bool> isMqttConnected() async {
return true;
}
@override
void dispose() {
disconnectMqtt();
super.dispose();
}
void switchControl1() {
_control_1 = !_control_1;
notifyListeners();
}
void switchControl2() {
_control_2 = !_control_2;
notifyListeners();
}
void switchControl3() {
_control_3 = !_control_3;
notifyListeners();
}
void switchControl4() {
_control_4 = !_control_4;
notifyListeners();
}
void switchControl5() {
_control_5 = !_control_5;
notifyListeners();
}
void switchControl6() {
_control_6 = !_control_6;
notifyListeners();
}
}