使用变量名作为参数更改数据 class 的任何变量
change any variable of a data class with the variable name as an argument
我想知道我是否可以为我的存储库创建一个函数,通过它我可以一般地更改基于数据 class 的变量中的任何值。这可能吗?
List<Task> tasks;
Future<void> changeTaskValue(int taskId, String variable, dynamic newValue) {
task[taskId].<magic to get a reference to the variable> = newValue;
}
class Task {
Task({this.taskId, this.taskName, this.status, });
final int taskId;
final String taskName;
final String status;
}
...
void function abc() {
changeTaskValue(taskId: 1, variable: 'taskName', newValue: 'test')
}
为此您需要使用 MAP 对象
List<Map<String, dynamic>> tasks;
Future<void> changeTaskValue(int taskId, String variable, dynamic newValue) {
tasks[taskId][variable] = newValue;
}
一件事是您不能修改最终变量。所以你可以做的是从列表中删除 Task
对象并添加另一个 Task
和你想要的数据。
List<Task> tasks;
Future<void> changeTaskValue({
int taskId,
String taskname,
String status,
}) {
tasks.remove(
Task(taskId: 1), //id of the task you want to remove
);
tasks.add(Task(
taskId: taskId,
taskName: taskname,
status: status,
));
}
class Task {
Task({
this.taskId,
this.taskName,
this.status,
});
final int taskId;
final String taskName;
final String status;
}
void abc() {
changeTaskValue(taskId: 1, taskname: 'taskName', status: 'test');
}
我想知道我是否可以为我的存储库创建一个函数,通过它我可以一般地更改基于数据 class 的变量中的任何值。这可能吗?
List<Task> tasks;
Future<void> changeTaskValue(int taskId, String variable, dynamic newValue) {
task[taskId].<magic to get a reference to the variable> = newValue;
}
class Task {
Task({this.taskId, this.taskName, this.status, });
final int taskId;
final String taskName;
final String status;
}
...
void function abc() {
changeTaskValue(taskId: 1, variable: 'taskName', newValue: 'test')
}
为此您需要使用 MAP 对象
List<Map<String, dynamic>> tasks;
Future<void> changeTaskValue(int taskId, String variable, dynamic newValue) {
tasks[taskId][variable] = newValue;
}
一件事是您不能修改最终变量。所以你可以做的是从列表中删除 Task
对象并添加另一个 Task
和你想要的数据。
List<Task> tasks;
Future<void> changeTaskValue({
int taskId,
String taskname,
String status,
}) {
tasks.remove(
Task(taskId: 1), //id of the task you want to remove
);
tasks.add(Task(
taskId: taskId,
taskName: taskname,
status: status,
));
}
class Task {
Task({
this.taskId,
this.taskName,
this.status,
});
final int taskId;
final String taskName;
final String status;
}
void abc() {
changeTaskValue(taskId: 1, taskname: 'taskName', status: 'test');
}