【发布时间】:2022-01-20 22:13:48
【问题描述】:
我正在尝试使用 Flutter 中的提供者状态管理来设置变量的状态,所以当我在构建中调用提供者时,它将改变我的提供者类中布尔值的状态。
现在的问题是提供程序中的大多数函数都在做基本相同的事情,因为它们只是将布尔值更改为相反的值。
我一直在寻找一种方法来缩短代码,因为这些函数的作用基本相同。我一直在思考整个事情,但我什么也想不出来,而且这种意大利面条式的代码让我的眼睛很痛:
class AlarmState extends ChangeNotifier {
var hour = 0;
var min = 0;
bool isWednesday = false;
bool isMonday = false;
bool isTuesday = false;
bool isThursday = false;
bool isFriday = false;
bool isSaturday = false;
bool isSunday = false;
bool alarmRing = false;
bool vibrate = false;
bool snooze = false;
List<AlarmObject> alarmList = [];
bool isAlarmOn = true;
void handleChangeHour(int index) {
hour = index;
notifyListeners();
}
void handleChangeMin(int index) {
min = index;
notifyListeners();
}
void changeMonday() {
isMonday = !isMonday;
notifyListeners();
}
void changeTuesday() {
isTuesday = !isTuesday;
notifyListeners();
}
void changeWednesday() {
isWednesday = !isWednesday;
notifyListeners();
}
void changeThursday() {
isThursday = !isThursday;
notifyListeners();
}
void changeFriday() {
isFriday = !isFriday;
notifyListeners();
}
void changeSaturday() {
isSaturday = !isSaturday;
notifyListeners();
}
void changeSunday() {
isSunday = !isSunday;
notifyListeners();
}
void handleAlarmRing(value) {
alarmRing = value;
notifyListeners();
}
void handleSnooze(value) {
snooze = value;
notifyListeners();
}
void handleVibrate(value) {
vibrate = value;
notifyListeners();
}
void handleIsAlarmOn(bool value) {
isAlarmOn = value;
print(isAlarmOn);
notifyListeners();
}
}
【问题讨论】:
-
您可以使用
List<bool>和单个函数,而不是为一周中的每一天使用单独的变量和函数吗? -
我不知道我将如何实现它,你能告诉我吗?
标签: flutter dart flutter-provider