前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Dart语言入门指南

Dart语言入门指南

作者头像
陆业聪
发布于 2024-07-23 10:22:11
发布于 2024-07-23 10:22:11
43500
代码可运行
举报
运行总次数:0
代码可运行

Dart是由Google开发的一种通用编程语言,旨在为移动、Web和桌面应用提供优秀的性能和一致的开发体验。Dart语言的设计目标是实现语言的简洁、高效和可扩展性,同时保持易学易用。以下是Dart语言的入门指南,包括环境搭建、基本语法和示例代码。

一、环境搭建

要开始使用Dart,你首先需要在你的机器上安装Dart SDK。你可以从Dart官方网站(https://dart.dev/get-dart)下载并安装适合你的操作系统的Dart SDK。安装完成后,你可以在命令行中运行dart --version来验证安装是否成功。

二、基本语法

以下是Dart语言的一些基本语法:

  1. 变量:Dart使用var关键字声明一个变量。Dart是强类型语言,但类型推断使得类型注解变得可选。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var name = 'Dart'; // String类型
var version = 2.13; // double类型
  1. 常量:Dart使用finalconst关键字声明常量。final声明的常量只能赋值一次,const声明的常量在编译时就确定了值。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
final name = 'Dart';
const version = 2.13;
  1. 函数:Dart函数的声明与大多数语言类似,可以有参数和返回值。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void printInfo(String name, double version) {
  print('Welcome to $name $version');
}
  1. 条件语句:Dart支持ifswitch条件语句。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var isTrue = true;
if (isTrue) {
  print('True');
} else {
  print('False');
}
  1. 循环语句:Dart支持forwhile循环语句。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for (var i = 0; i < 5; i++) {
  print(i);
}
  1. 集合:Dart内置了List(列表)、Set(集合)和Map(映射)三种集合类型。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var list = [1, 2, 3];
var set = {1, 2, 3};
var map = {
  'name': 'Dart',
  'version': 2.13,
};
  1. :Dart是一种面向对象的语言,支持类(Class)和对象(Object)。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Person {
  String name;
  int age;

  Person(this.name, this.age);

  void sayHello() {
    print('Hello, I am $name, $age years old');
  }
}

var person = Person('Tom', 20);
person.sayHello();

三、示例代码

以下是一个简单的Dart程序,它定义了一个Person类,并创建了一个Person对象,然后调用对象的方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void main() {
  var person = Person('Tom', 20);
  person.sayHello();
}

class Person {
  String name;
  int age;

  Person(this.name, this.age);

  void sayHello() {
    print('Hello, I am $name, $age years old');
  }
}

你可以将这段代码保存为一个.dart文件,然后在命令行中使用dart命令运行这个文件。

四、Dart库及其使用

Dart拥有丰富的内置库,可以帮助开发者更轻松地完成各种任务。以下是一些常用的Dart库及其简要介绍:

  1. dart:core:这是Dart的核心库,提供了基本类型(如String、num、List等)、数据结构、类型转换以及异常处理等功能。当你创建一个Dart文件时,dart:core库会自动导入,无需手动导入。
  2. dart:math:提供了数学运算相关的类和函数,如随机数生成、三角函数、对数函数等。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import 'dart:math';

void main() {
  var random = Random();
  print('Random number: ${random.nextInt(100)}');
}
  1. dart:io:提供了文件、目录、进程、套接字等I/O操作相关的类和函数。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import 'dart:io';

void main() async {
  var file = File('example.txt');
  await file.writeAsString('Hello Dart');
  var content = await file.readAsString();
  print('File content: $content');
}
  1. dart:async:提供了异步编程相关的类和函数,如Future、Stream等。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import 'dart:async';

void main() {
  print('Start');
  Future.delayed(Duration(seconds: 2), () {
    print('Delayed task');
  });
  print('End');
}
  1. dart:convert:提供了数据转换相关的类和函数,如JSON编码和解码。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import 'dart:convert';

void main() {
  var jsonString = '{"name": "Tom", "age": 20}';
  var decoded = json.decode(jsonString);
  print('Decoded data: $decoded');
  var encoded = json.encode(decoded);
  print('Encoded data: $encoded');
}
  1. dart:html:提供了浏览器中DOM操作相关的类和函数,仅在Web应用中可用。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import 'dart:html';

void main() {
  querySelector('#output').text = 'Hello Dart';
}

要使用这些库,只需在文件顶部使用import关键字导入相应的库即可。此外,Dart还支持使用第三方库,你可以使用pub包管理工具来添加和管理这些库。

五、Dart工具链

Dart提供了一系列工具来帮助开发者编写、分析、测试和运行代码。以下是一些常用的Dart工具:

  1. dart:Dart命令行工具,用于运行Dart文件。
  2. dartfmt:Dart代码格式化工具,用于自动格式化Dart代码。
  3. dartanalyzer:Dart静态分析工具,用于检查代码中的错误和警告。
  4. pub:Dart包管理工具,用于管理项目的依赖库。
  5. dartdoc:Dart文档生成工具,用于从Dart代码中生成API文档。

这些工具可以帮助你更高效地开发Dart应用,并确保代码质量。

六、Dart与Flutter

Dart语言与Flutter框架密切相关。Flutter是由Google开发的一款跨平台UI框架,用于构建高性能、高质量的iOSAndroid、Web和桌面应用。Flutter使用Dart作为开发语言,因此掌握Dart对于学习和使用Flutter至关重要。

以下是Dart在Flutter中的一些应用:

  1. 声明式UI:Dart的语法特性使其非常适合构建声明式UI。在Flutter中,你可以使用Dart轻松地创建和组合各种UI组件。
  2. 热重载:Dart的即时编译(JIT)特性使得Flutter可以在开发过程中实现热重载,即在不重启应用的情况下更新UI。这大大提高了开发效率和体验。
  3. 性能优化:Dart的预编译(AOT)特性使得Flutter应用在发布时可以编译成高效的机器码,从而实现高性能。
  4. 异步编程:Dart对异步编程的支持使得Flutter应用可以轻松地处理网络请求、文件操作等耗时任务,避免阻塞UI线程。
  5. 包管理:Dart的pub包管理工具使得Flutter开发者可以方便地使用和管理第三方库,丰富应用的功能。

学习和掌握Dart语言将为你在Flutter开发中提供坚实的基础,帮助你更好地理解和使用Flutter框架。

七、Dart的高级语言特性

7.1 面向对象

Dart是一种面向对象的语言,支持类(Class)和对象(Object)。它支持单一继承,多重接口实现,以及混入(Mixin)。以下是一个简单的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Animal {
  void makeSound() => print('Some sound');
}

class Dog extends Animal {
  void makeSound() => print('Woof');
}

class Bird implements Animal {
  void makeSound() => print('Chirp');
}

mixin Swim {
  void swim() => print('Swimming');
}

class Dolphin extends Animal with Swim {}

void main() {
  Dog().makeSound();
  Bird().makeSound();
  Dolphin().swim();
}

在这个例子中,我们定义了一个Animal基类,以及DogBird子类。Dog类通过继承Animal类来实现多态,而Bird类通过实现Animal接口来实现多态。我们还定义了一个Swim混入,它可以被添加到Dolphin类中,使Dolphin类具有swim方法。

7.2 静态类型和类型推断

Dart是静态类型语言,可以在编译时检查类型错误。同时,Dart也支持类型推断,使得代码更简洁。以下是一个简单的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
String greet(String name) => 'Hello, $name';

void main() {
  String message = greet('Dart');
  print(message);
}

在这个例子中,我们定义了一个名为greet的函数,它接受一个String类型的参数,并返回一个String类型的值。由于Dart支持类型推断,我们可以省略变量message的类型注解,Dart会自动推断出它的类型。

7.3 异步编程

Dart对异步编程有很好的支持,包括Futureasyncawait关键字,以及Stream。以下是一个简单的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import 'dart:async';

Future<String> fetchData() async {
  await Future.delayed(Duration(seconds: 2));
  return 'Data fetched';
}

void main() async {
  print('Fetching data...');
  String data = await fetchData();
  print(data);
}

在这个例子中,我们定义了一个名为fetchData的异步函数,它使用async关键字声明,并返回一个Future<String>类型的值。我们在main函数中使用await关键字等待fetchData函数的结果,然后打印出数据。

7.4 集合字面量

Dart支持List(列表)、Set(集合)和Map(映射)的字面量语法。以下是一个简单的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void main() {
  List<int> numbers = [1, 2, 3];
  Set<String> fruits = {'apple', 'banana', 'orange'};
  Map<String, int> scores = {'Alice': 90, 'Bob': 80, 'Cathy': 85};
  print(numbers);
  print(fruits);
  print(scores);
}

在这个例子中,我们使用字面量语法创建了一个整数列表、一个字符串集合和一个字符串到整数的映射。这种语法简洁且易于阅读。

7.5 函数式编程元素

Dart支持函数式编程的一些元素,如函数是一等公民,可以作为参数传递,或作为返回值。Dart还支持匿名函数(lambda)和闭包。以下是一个简单的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void performOperation(int a, int b, Function operation) {
  print(operation(a, b));
}

void main() {
  var add = (int a, int b) => a + b;
  var multiply = (int a, int b) => a * b;
  performOperation(2, 3, add);
  performOperation(2, 3, multiply);
}

在这个例子中,我们定义了一个名为performOperation的函数,它接受两个整数和一个函数作为参数。然后,我们定义了两个匿名函数addmultiply,并将它们作为参数传递给performOperation函数。

7.6 异常处理

Dart拥有完善的异常处理机制,支持throw和catch。以下是一个简单的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void main() {
  try {
    throw Exception('An error occurred');
  } catch (e) {
    print(e);
  } finally {
    print('Done');
  }
}

在这个例子中,我们使用throw关键字抛出一个异常,并使用catch关键字捕获这个异常。无论是否发生异常,finally块中的代码都会被执行。

7.7 元数据

Dart支持使用注解(Annotation)添加元数据。以下是一个简单的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class CustomAnnotation {
  final String description;

  const CustomAnnotation(this.description);
}

@CustomAnnotation('This is a custom annotation')
void annotatedFunction() {
  print('This function has a custom annotation');
}

void main() {
  annotatedFunction();
}

在这个例子中,我们定义了一个名为CustomAnnotation的注解,然后将这个注解添加到annotatedFunction函数上。

7.8 空安全

Dart 2.12版本引入了空安全(Null Safety)特性,可以在编译时捕获和防止空引用错误。以下是一个简单的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int? getNullableValue() => null;

void main() {
  int? nullableValue = getNullableValue();
  int nonNullableValue = nullableValue ?? 0;
  print(nonNullableValue);
}

在这个例子中,我们定义了一个名为getNullableValue的函数,它返回一个可空的整数。然后,我们使用??操作符提供了一个在nullableValuenull时使用的默认值。

7.9 泛型

Dart支持泛型编程,可以创建泛型类、泛型方法。以下是一个简单的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Box<T> {
  final T content;

  Box(this.content);
}

void main() {
  var intBox = Box<int>(42);
  var stringBox = Box<String>('Hello Dart');
  print(intBox.content);
  print(stringBox.content);
}

在这个例子中,我们定义了一个名为Box的泛型类,它可以持有任何类型的内容。然后,我们创建了两个Box对象,一个持有整数,一个持有字符串。

7.10 库和包

Dart支持创建和使用库(Library)和包(Package),可以方便地进行代码的模块化管理。以下是一个简单的示例:

lib目录下创建一个名为greet.dart的库文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// lib/greet.dart
String greet(String name) => 'Hello, $name';

main.dart文件中导入并使用库:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import 'package:my_app/greet.dart';

void main() {
  print(greet('Dart'));
}

在这个例子中,我们创建了一个名为greet的库,并在main.dart文件中导入和使用了这个库。

八、学习资源

要想深入学习Dart,可以参考以下资源:

  1. Dart官方网站(https://dart.dev/):提供了Dart的详细文档、教程和API参考。
  2. DartPad(https://dartpad.dev/):一个在线的Dart代码编辑器,可以在浏览器中编写和运行Dart代码,非常适合尝试和学习Dart。
  3. Dart语言规范(https://dart.dev/guides/language/spec):详细介绍了Dart语言的语法和语义,适合有一定编程基础的开发者阅读。
  4. Dart教程和示例(https://dart.dev/samples):提供了一系列Dart的教程和示例代码,可以帮助你更快地学会Dart。

九、总结

Dart是一种强大且易学的编程语言,适用于各种应用场景,特别是在Flutter框架中发挥了重要作用。本文提供了一个Dart入门指南,涵盖了环境搭建、基本语法、示例代码、常用库、工具链、高级语音特性等内容。要想熟练掌握Dart,需要不断地学习和实践。希望这篇文章能帮助你在Dart学习之旅中取得良好的开端。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-04-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 陆业聪 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
【Java】java 集合框架(详解)
🔥 Java集合框架 提供了一系列用于存储和操作对象组的接口和类。这些工具是为了解决不同数据结构通用操作的需求而设计的。集合框架主要包括两种类型的容器:
IsLand1314
2025/06/02
1480
【Java】java 集合框架(详解)
Java学习笔记——集合
存储对象可以使用数组 (基本数据类型 & 引用数据类型) 和集合 (引用数据类型),用数组存储对象的弊端有:一旦创建,其长度不可变;数组中真正存储的对象个数不可知,除非自定义类。使用集合可以解决这些问题。
梦飞
2022/06/23
2880
Java学习笔记——集合
五、集合基础【黑马JavaSE笔记】
注:以上方法时List集合特有的方法,Collection集合没有这些方法,但是ArrayLIst集合有这些方法,因为ArrayList继承自List集合。
啵啵鱼
2022/11/23
7790
五、集合基础【黑马JavaSE笔记】
Java基础(十九):集合框架
List除了从Collection集合继承的方法外,List 集合里添加了一些根据索引来操作集合元素的方法
Java微观世界
2025/01/21
3580
Java基础(十九):集合框架
Java学习笔记(三):集合类与常用数据结构的典型用法
foochane :https://foochane.cn/article/2019122801.html 1 Collection集合 1.1 集合概述 在前面基础班我们已经学习过并使用过集合A
foochane
2020/02/13
9350
Java基础之集合
-集合结构只要发生改变,迭代器必须重新获取,如果还是用的之前的迭代器,就会出现异常java.util.ConcurrentModificationException
shaoshaossm
2022/12/27
5410
Java基础之集合
50道Java集合经典面试题(收藏版)
Collection.sort是对list进行排序,Arrays.sort是对数组进行排序。
捡田螺的小男孩
2020/06/19
9300
50道Java集合经典面试题(收藏版)
阶段01Java基础day18集合框架04
声明:本文为原创,作者为 对弈,转载时请保留本声明及附带文章链接:http://www.duiyi.xyz/c%e5%ae%9e%e7%8e%b0%e9%9b%b7%e9%9c%86%e6%88%98%e6%9c%ba-25/
对弈
2019/09/04
5590
【17】JAVASE-集合专题【从零开始学JAVA】
Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机,Java 仍是企业和开发人员的首选开发平台。
用户4919348
2024/05/25
2070
【17】JAVASE-集合专题【从零开始学JAVA】
Java基础——集合
集合是java中提供的一种容器,可以用来存储多个数据,集合框架主要java.util 包中,存储结构可以分为两大类,分别是单列集合java.util.Collection和双列集合java.util.Map。 Collection是单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是java.util.List和java.util.Set。其中,List的特点是元素有序、元素可重复。Set的特点是元素无序,而且不可重复。List接口的主要实现类有java.util.ArrayList和java.util.LinkedList,Set接口的主要实现类有java.util.HashSet和java.util.TreeSet。
羊羽shine
2019/05/28
6260
13 Java 集合
Java 集合定义了两种基本的数据结构,一种是 Collection,表示一组对象的集合;另一种是Map,表示对象间的一系列映射或关联关系。Java 集合的基本架构如下图。
acc8226
2022/05/17
2.4K0
13  Java 集合
Java官方笔记14流
The Stream API is probably the second most important feature added to Java SE 8, after the lambda expressions. In a nutshell, the Stream API is about providing an implementation of the well known map-filter-reduce algorithm to the JDK.
dongfanger
2023/07/20
2210
Java 集合补充
集合和数组不一样,数组元素可以是基本类型的值,也可以是对象(的引用变量),集合里只能保存对象(的引用变量)。
二十三年蝉
2018/08/01
1.1K0
Java 集合补充
Java学习之集合篇
上篇文章的常用类,其实就已经讲到了,这个ArrayList集合,但是ArrayList只是集合中的其中一种,那这篇文章就来讲讲关于集合的一些对象。
全栈程序员站长
2022/07/13
3350
Java 类集初探
List属于接口,如果想使用接口进行操作,就必须存在子类;使用 ArrayList 子类实现(和Vector子类)
Mirror王宇阳
2020/11/10
5940
Java(集合④)
当方法的参数列表数据类型已经确定,但是参数个数不确定,就可以使用可变参数;
全栈开发日记
2022/05/12
8060
Java 集合框架全景解析:从原理到实战
在 Java 编程中,集合框架(Collection Framework)是开发者处理数据结构的核心工具。它为开发者提供了一整套结构化的数据容器,帮助我们以更高效、更面向对象的方式组织和操作数据。
用户11690571
2025/06/06
760
Java 集合框架全景解析:从原理到实战
Java类集框架详细汇总
Java的类集框架比较多,也十分重要,在这里给出图解,可以理解为相应的继承关系,也可以当作重要知识点回顾;
BUG弄潮儿
2021/04/12
7470
Java-集合
哈喽!大家好,我是小简。今天开始学习《Java-集合》,此系列是我做的一个 “Java 从 0 到 1 ” 实验,给自己一年左右时间,按照我自己总结的 Java-学习路线,从 0 开始学 Java 知识,并不定期更新所学笔记,期待一年后的蜕变吧!<有同样想法的小伙伴,可以联系我一起交流学习哦!>
小简
2023/01/04
1.2K0
Java-集合
务实java基础之集合总结
Java 提供了容纳对象(或者对象的句柄)的多种方式。其中内建的类型是数组,此外, Java 的工具库提供了一些 “集合类”,利用这些集合类,我们可以容纳乃至操纵自己的对象。 声明:本篇博客内容参考自《java编程思想》,代码均来自书中,大部分内容截取自该书
老马的编程之旅
2022/06/22
6460
务实java基础之集合总结
相关推荐
【Java】java 集合框架(详解)
更多 >
目录
  • 二、基本语法
  • 三、示例代码
  • 四、Dart库及其使用
  • 五、Dart工具链
  • 六、Dart与Flutter
  • 七、Dart的高级语言特性
    • 7.1 面向对象
    • 7.2 静态类型和类型推断
    • 7.3 异步编程
    • 7.4 集合字面量
    • 7.5 函数式编程元素
    • 7.6 异常处理
    • 7.7 元数据
    • 7.8 空安全
    • 7.9 泛型
    • 7.10 库和包
  • 八、学习资源
  • 九、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档