Click Here to see Dartpad Screenshot
void main(){
Student file1 = Student.empty;
Student file2 = Student.empty;
file1.name = 'ABC';
file2.name = 'DEF';
print(file1.name);
print(file2.name);
}
class Student{
String name;
Student({
required this.name,
});
static Student empty = Student(name: '');
}
Output Value
DEF DEF
Expected Value
ABC DEF
CodePudding user response:
Because you need to use a getter for that:
class Student {
String name;
Student({
required this.name,
});
static Student get empty => Student(name: '');
}
CodePudding user response:
This happens, because you are using the same static
instance of Student
, since the static field is shared across all instances of Student
.
So your variables file1
and file2
are referencing the same single instance of Student
.
You may want to use a factory constructor instead:
https://dart.dev/guides/language/language-tour#factory-constructors
void main() {
Student file1 = Student.empty();
Student file2 = Student.empty();
file1.name = 'ABC';
file2.name = 'DEF';
print(file1.name);
print(file2.name);
}
class Student {
String name;
Student({
required this.name,
});
factory Student.empty() {
return Student(name: '');
}
}