Classes
Creating a class
Classes can be created as follow:
class InputField {
int maxLength;
String name;
}
The class can be instantiated using the new
keyword after which the field values will be null by default.
var field = new InputField();
Field values can then be accessed:
// this will trigger the setter
field.name = "fieldname";
// this will trigger the getter
print(field.name);
Members
A class can have members.
Instance variables can be declared with/without type annotations, and optionally initialized. Uninitialised members have the value of null
, unless set to another value by the constructor.
class Foo {
var member1;
int member2;
String member3 = "Hello world!";
}
Class variables are declared using the static
keyword.
class Bar {
static var member4;
static String member5;
static int member6 = 42;
}
If a method takes no arguments, is fast, returns a value, and doesn’t have visible side-effects, then a getter method can be used:
class Foo {
String get bar {
var result;
// ...
return result;
}
}
Getters never take arguments, so the parentheses for the (empty) parameter list are omitted both for declaring getters, as above, and for calling them, like so:
main() {
var foo = new Foo();
print(foo.bar); // prints "bar"
}
There are also setter methods, which must take exactly one argument:
class Foo {
String _bar;
String get bar => _bar;
void set bar(String value) {
_bar = value;
}
}
The syntax for calling a setter is the same as variable assignment:
main() {
var foo = new Foo();
foo.bar = "this is calling a setter method";
}
Constructors
A class constructor must have the same name as its class.
Let’s create a constructor for a class Person:
class Person {
String name;
String gender;
int age;
Person(this.name, this.gender, this.age);
}
The example above is a simpler, better way of defining the constructor than the following way, which is also possible:
class Person {
String name;
String gender;
int age;
Person(String name, String gender, int age) {
this.name = name;
this.gender = gender;
this.age = age;
}
}
Now you can create an instance of Person like this:
var alice = new Person('Alice', 'female', 21);