入门 Dart 编程:为 Flutter 开发应用打下基础 审核中

发布时间 2023-11-22 20:35:57作者: YANKEESEAN
前言:

Dart 是一门现代化的、多用途的编程语言,最为广泛应用于移动应用开发中的 Flutter 框架。本篇博客旨在为初学者提供 Dart 编程的基础概念,为进一步探索 Flutter 开发打下坚实基础。

DartPad 演示 ?
首先,让我们熟悉 DartPad,这是一个在线沙盒,用于测试 Dart 代码。你可以在 [dartpad.dev](https://dartpad.dev) 上尝试各种 Dart 代码片段。

变量 ?
Dart 使用变量来存储值,支持整数(int)、字符串(String)、布尔(bool)和动态类型(dynamic) 。静态类型语言的特性使得一旦给变量指定类型,就不能更改类型。

复制代码
 1 // Integer variable
 2 int age = 30;
 3 print(age);
 4 
 5 // String variable
 6 String name = 'Chun-Li';
 7 print(name);
 8 
 9 // Boolean variable
10 bool isNight = false;
11 print(isNight);
12 
13 // Dynamic variable
14 dynamic dynamicVar = 'Chun-Li';
15 print(dynamicVar);
16 
17 dynamicVar = 30; // Dynamic allows type change
18 print(dynamicVar);
复制代码

 

函数 ?
主函数 `void main()` 是 Dart 程序的入口点。使用 `void` 关键字表示函数不返回任何值。箭头函数适用于单行返回的情况。

复制代码
 1 // Void function
 2 void printHello() {
 3 print('Hello!');
 4 }
 5 
 6 // Function with return type
 7 String greeting() {
 8 return 'Hello, Dart!';
 9 }
10 
11 // Arrow function
12 String greetingArrow() => 'Hello, Dart! (Arrow)';
复制代码

 


列表 ?
列表在 Dart 中类似于 JavaScript 中的数组,使用方括号表示。在声明列表时指定元素类型的重要性,以确保一致性。接下来我将实例如何创建、添加和删除列表中的元素。

复制代码
 1 // List declaration
 2 List<String> names = ['Chun-Li', 'Yoshi', 'Miriao'];
 3 
 4 // Print names
 5 print(names);
 6 
 7 // Add to the list
 8 names.add('Luigi');
 9 print(names);
10 
11 // Remove from the list
12 names.remove('Yoshi');
13 print(names);
复制代码

 


动态类型 ?
动态类型允许在不同类型之间切换。`dynamic` 类型允许在运行时更改变量类型,但不推荐,因为可能导致代码错误。

复制代码
 1 // List declaration
 2 List<String> names = ['Chun-Li', 'Yoshi', 'Miriao'];
 3 
 4 // Print names
 5 print(names);
 6 
 7 // Add to the list
 8 names.add('Luigi');
 9 print(names);
10 
11 // Remove from the list
12 names.remove('Yoshi');
13 print(names);
复制代码

 


类和继承 ?️
类的概念
类是编程语言中的概念,类似于对象的蓝图,用于描述对象的属性和方法。

通过创建类,可以定义对象的结构,例如用户对象,以便存储相关信息。

实例化类
要创建实际的对象,需要实例化类。通过调用类名称并传递参数来实例化对象。

构造函数
构造函数是实例化类时运行的特殊函数,用于设置对象的初始状态。可以接受参数,使每个实例的属性值不同。

复制代码
 1 class User {
 2 String username;
 3 int age;
 4 
 5 User(String username, int age) {
 6 this.username = username;
 7 this.age = age;
 8 }
 9 
10 void login() {
11 print('User logged in');
12 }
13 }
复制代码

 


继承
继承是一种机制,允许一个类继承另一个类的属性和方法。使用 `extends` 关键字实现继承。

子类(派生类)继承父类(基类)的属性和方法,同时可以添加自己的属性和方法。

复制代码
1 class SuperUser extends User {
2 void publish() {
3 print('Published update');
4 }
5 }
6 
7 SuperUser user3 = SuperUser('Yoshi', 20);
8 user3.publish();
复制代码

 


Maps ?️
Maps 是键值对的集合,类似于 JavaScript 中的对象字面量或 Python 中的字典。在 Dart 中,使用冒号 `:` 分隔键和值。

注意!在Dart 中,Map 的键值对是使用冒号 : 进行赋值的,而不是等号 =。

1 //创建Map:
2 Map<String, dynamic> student = {'name': 'Sean Lee', 'age': 25};
3 //访问Map的值:
4 print(student['name']);

 


空安全语法 ?
Dart 引入了空安全语法,使用 `?.` 操作符简化对可能为 `null` 的对象的成员访问,以避免因为访问 null 对象的属性或方法而导致的运行时异常。这使得代码更简洁、安全,避免了大量的空值检查代码。

1.访问对象属性:

复制代码
1 // Before null safety
2 if (user != null) {
3 print(user.name);
4 }
5 
6 // After null safety
7 print(user?.name);
复制代码

 

如果 user 不为 null,则会打印 user.name 的值,否则不会引发异常,而是返回 null。

2.调用对象方法:

复制代码
1 // 在空安全前
2 if (userManager != null) {
3 userManager.getUser()?.refresh();
4 }
5 
6 // 空安全后
7 userManager?.getUser()?.refresh();
复制代码

 

如果 userManager 不为 null 且 getUser() 返回的对象不为 null,则调用 refresh() 方法。如果其中任何一个为 null,则整个表达式的结果为 null。

3.使用链式操作:

复制代码
1 // 在空安全前
2 if (user != null && user.address != null && user.address.city != null) {
3 print(user.address.city);
4 }
5 
6 // 空安全后
7 print(user?.address?.city);
复制代码

 

如果 user、user.address 和 user.address.city 中任何一个为 null,则整个表达式的结果为 null。

4.配合赋值操作:

复制代码
1 // 在空安全前
2 if (user != null) {
3 user.name = 'John Doe';
4 }
5 
6 // 空安全后
7 user?.name = 'John Doe';
复制代码

 

如果 user 不为 null,则为 user.name 赋值;否则什么也不做。

const 构造函数 ?️
在 Dart 中,`const` 构造函数用于创建编译时常量。使用 `const` 关键字构造函数时,构造函数及其使用的所有成员都必须是可编译时常量。这对于某些数据类型和对象是有限制的,因为不是所有的构造函数都可以用于创建编译时常量。

复制代码
 1 class MyObject {
 2 final int value;
 3 
 4 // 这是一个 const 构造函数
 5 const MyObject(this.value);
 6 }
 7 
 8 void main() {
 9 // 正确:在 const 上下文中使用 const 构造函数
10 const myInstance = MyObject(42);
11 }
复制代码

 


这是一个简单的 Dart 入门指南,涵盖了语言的基础概念。希望这能够帮助初学者开始你们的 Dart 编程之旅,为进一步探索 Flutter 开发奠定基础。要深入了解 Dart 和 Flutter,请查阅官方文档和教程,并勇敢地开始你的移动应用开发之旅!

后续我也将会持续更新有关Flutter的学习笔记,如果这篇文章对你有帮助的话,请多多点赞、转发、收藏吧~