void main() {// 显式类型声明int age = 25;double height = 1.75;String name = 'Alice';bool isStudent = true;// 隐式类型 (var 或 dynamic)var city = 'Beijing'; // 类型由赋值决定dynamic anything = 100; // 可以更改类型anything = 'Now a String';print('$name, $age years old, lives in $city');
}
2️⃣ 常量
const pi = 3.1415; // 编译时常量
final now = DateTime.now(); // 运行时常量
3️⃣ 函数
// 普通函数
int add(int a, int b) {return a + b;
}// 箭头函数
int multiply(int a, int b) => a * b;// 可选参数
void greet(String name, [String greeting = 'Hello']) {print('$greeting, $name!');
}// 命名参数
void showUser({required String name, int age = 0}) {print('Name: $name, Age: $age');
}void main() {print(add(2, 3));greet('Alice');showUser(name: 'Bob', age: 25);
}
4️⃣ 控制流语句
void main() {int num = 10;// if-elseif (num > 5) {print('Big number');} else {print('Small number');}// for loopfor (int i = 0; i < 5; i++) {print('i: $i');}// while loopint count = 0;while (count < 3) {print('count: $count');count++;}// switchString grade = 'A';switch (grade) {case 'A':print('Excellent');break;case 'B':print('Good');break;default:print('Try harder');}
}
class Person {String name;int age;Person(this.name, this.age);void sayHello() {print('Hello, my name is $name');}
}void main() {var p = Person('Tom', 30);p.sayHello();
}
7️⃣ 继承与多态
class Animal {void makeSound() => print('Animal sound');
}class Dog extends Animal {@overridevoid makeSound() => print('Woof!');
}void main() {Animal a = Dog();a.makeSound(); // Woof!
}
class Person {String name; // 属性int age;// 构造函数Person(this.name, this.age);// 方法void sayHello() {print('Hi, I am $name and I am $age years old.');}
}void main() {var p = Person('Alice', 25);p.sayHello();
}
class 关键字定义类。
类中可以包含:属性(字段) 构造函数 方法
实例化类用 var p = Person(…)。
2️⃣ 构造函数详解
class Dog {String name;Dog(this.name); // 简写,等价于 Dog(String name) { this.name = name; }
}void main() {var dog = Dog('Buddy');print(dog.name);
}
命名构造函数
class Point {int x, y;Point(this.x, this.y);Point.origin() : x = 0, y = 0; // 命名构造函数Point.fromList(List<int> coords): x = coords[0],y = coords[1];
}void main() {var p1 = Point(2, 3);var p2 = Point.origin();var p3 = Point.fromList([5, 6]);print('${p1.x}, ${p1.y}');print('${p2.x}, ${p2.y}');print('${p3.x}, ${p3.y}');
}
3️⃣ 继承、重写(Override)
class Animal {void speak() {print('Animal speaks');}
}class Dog extends Animal {@overridevoid speak() {print('Woof!');}
}void main() {var a = Animal();var d = Dog();a.speak();d.speak();
}
4️⃣ Getter & Setter
class Circle {double _radius;Circle(this._radius);double get area => 3.14 * _radius * _radius;set radius(double r) {if (r > 0) {_radius = r;}}
}void main() {var c = Circle(5);print(c.area);c.radius = 10;print(c.area);
}
class Person {String name;int _age;Person(this.name, int age) : _age = age;void sayHello() => print('Hi, I am $name');int get age => _age;set age(int a) {if (a > 0) _age = a;}static String species = 'Human';static void printSpecies() => print('Species: $species');
}void main() {var p = Person('Tom', 30);p.sayHello();print('Age: ${p.age}');p.age = 35;print('New Age: ${p.age}');Person.printSpecies();
}