当前位置: 首页 > news >正文

Dart 语言知识点总结

Dart 语言知识点总结

Dart 是 Flutter 框架的编程语言,是一种面向对象的、强类型的、支持垃圾回收的语言。以下是 Dart 语言的核心知识点:

一、基础语法

1. 变量与常量

// 变量声明
var name = 'Alice';  // 类型推断
String name = 'Alice';  // 显式类型
dynamic dynamicVar = 'String';  // 动态类型// 常量
final finalVar = '不可修改';  // 运行时常量
const constVar = '编译时常量';  // 编译时常量

2. 基本数据类型

// 数字类型
int age = 30;  // 整数
double height = 1.75;  // 浮点数
num number = 3.14;  // 可以是int或double// 字符串
String str1 = '单引号';
String str2 = "双引号";
String multiLine = '''多行字符串
''';// 布尔
bool isTrue = true;// 列表(List)
List<int> numbers = [1, 2, 3];
var list = [1, 'two', 3.0];  // 动态类型列表// 集合(Set)
var uniqueNumbers = {1, 2, 3};// 映射(Map)
Map<String, int> scores = {'Alice': 90, 'Bob': 80};

二、运算符

1. 基本运算符

// 算术运算符
var sum = 1 + 2;
var mod = 5 % 2;  // 取模// 关系运算符
bool isEqual = (1 == 1);// 逻辑运算符
bool result = (true && false);// 赋值运算符
var a = 1;
a ??= 2;  // 如果a为null则赋值

2. 特殊运算符

// 空安全运算符
String? nullableString;
var length = nullableString?.length ?? 0;  // 如果为null则返回0// 级联运算符
var person = Person()..name = 'Alice'..age = 30;// 展开运算符
var list1 = [1, 2];
var list2 = [0, ...list1];  // [0, 1, 2]

三、控制流程

1. 条件语句

// if-else
if (age > 18) {print('成年人');
} else {print('未成年人');
}// switch-case
switch (grade) {case 'A':print('优秀');break;default:print('其他');
}

2. 循环语句

// for循环
for (var i = 0; i < 5; i++) {print(i);
}// for-in循环
for (var number in numbers) {print(number);
}// while循环
while (i < 5) {print(i);i++;
}// do-while
do {print(i);i++;
} while (i < 5);

四、函数

1. 函数定义

// 基本函数
int add(int a, int b) {return a + b;
}// 箭头函数(单行函数)
int add(int a, int b) => a + b;// 可选参数
void printInfo(String name, [int? age]) {print('Name: $name, Age: ${age ?? '未知'}');
}// 命名参数
void printInfo({required String name, int age = 18}) {print('Name: $name, Age: $age');
}// 函数作为参数
void execute(Function callback) {callback();
}

2. 高阶函数

// 匿名函数
var list = [1, 2, 3];
list.forEach((item) {print(item);
});// 闭包
Function makeAdder(int addBy) {return (int i) => addBy + i;
}
var add2 = makeAdder(2);
print(add2(3));  // 输出5

五、面向对象编程

1. 类与对象

class Person {// 实例变量String name;int age;// 构造函数Person(this.name, this.age);// 命名构造函数Person.guest() {name = 'Guest';age = 18;}// 方法void introduce() {print('我是$name,今年$age岁');}
}// 使用
var person = Person('Alice', 30);
person.introduce();

2. 继承与多态

class Animal {void eat() {print('动物吃东西');}
}class Dog extends Animal {void eat() {print('狗吃骨头');}void bark() {print('汪汪汪');}
}

3. 抽象类与接口

// 抽象类
abstract class Shape {double area();  // 抽象方法
}class Circle implements Shape {double radius;Circle(this.radius);double area() => 3.14 * radius * radius;
}

4. Mixin

mixin Swim {void swim() {print('游泳');}
}class Duck with Swim {// 现在Duck类有swim方法
}

六、异步编程

1. Future

Future<String> fetchUser() async {await Future.delayed(Duration(seconds: 1));return 'Alice';
}void main() async {var user = await fetchUser();print(user);// 或者使用thenfetchUser().then((user) => print(user));
}

2. Stream

Stream<int> countStream(int max) async* {for (int i = 0; i < max; i++) {await Future.delayed(Duration(seconds: 1));yield i;}
}void main() async {await for (var num in countStream(5)) {print(num);}
}

七、高级特性

1. 泛型

class Box<T> {T value;Box(this.value);T getValue() => value;
}void main() {var box = Box<String>('Hello');print(box.getValue());
}

2. 扩展方法

extension NumberParsing on String {int parseInt() {return int.parse(this);}
}void main() {print('42'.parseInt());  // 输出42
}

3. 空安全

String? nullableString;  // 可空类型void printLength(String? str) {if (str != null) {print(str.length);  // 通过null检查后自动提升为非空}print(str?.length ?? 0);  // 使用空安全运算符
}

4. Isolate(多线程)

import 'dart:isolate';void isolateFunction(SendPort sendPort) {sendPort.send('来自Isolate的消息');
}void main() async {var receivePort = ReceivePort();await Isolate.spawn(isolateFunction, receivePort.sendPort);receivePort.listen((message) {print('收到: $message');receivePort.close();});
}

八、常用库

1. 核心库

import 'dart:async';  // 异步编程
import 'dart:convert';  // JSON编解码
import 'dart:io';  // 文件I/O
import 'dart:math';  // 数学函数

2. 常用第三方库

import 'package:http/http.dart' as http;  // HTTP请求
import 'package:path/path.dart' as path;  // 路径处理

九、代码风格

1. 命名规范

  • 类名:大驼峰式(MyClass
  • 变量和方法名:小驼峰式(myVariable
  • 常量:全大写加下划线(MY_CONSTANT

2. 其他规范

  • 使用2个空格缩进
  • 每行不超过80个字符
  • 使用单引号表示字符串(除非字符串内有单引号)

十、与JavaScript对比

特性DartJavaScript
类型系统强类型(支持类型推断)弱类型
空安全支持(非空默认)不支持
异步编程Future/async/awaitPromise/async/await
模块系统基于包的导入系统ES6模块
编译方式可编译为原生代码或JavaScript解释执行或JIT编译

Dart 的这些特性使其特别适合构建高性能、跨平台的应用程序,尤其是与 Flutter 框架配合使用时。

http://www.lryc.cn/news/584528.html

相关文章:

  • C++编程学习阶段性总结
  • python-字符串
  • 钉钉拿飞书当靶
  • 服务器内核级故障排查
  • 深入理解区块链 | 去中心化架构与密码学保障
  • Redisson 的分布式锁
  • (一)OpenCV——噪声去除(降噪)
  • 职坐标:嵌入式AI边缘计算实战
  • [5种方法] 如何将iPhone短信保存到电脑
  • 【网络】Linux 内核优化实战 - net.ipv4.tcp_keepalive_intv
  • Cloudflare 发布容器服务公测版:边缘计算新时代来临?
  • 【TCP/IP】6. 差错与控制报文协议
  • 下一代防火墙混合模式部署
  • 化工厂防爆气象站的功能优势
  • 逻辑回归的Python实现与优化
  • jenkins部署springboot项目
  • 综合演练——名片管理系统I
  • CVE-2022-4262/CVE-2022-3038
  • YOLO11 目标检测从安装到实战
  • Flutter 知识点总结
  • Spring Boot 3.4 :@Fallback 注解 - 让微服务容错更简单
  • 颠覆传统IO:零拷贝技术如何重塑Java高性能编程?
  • 【Linux基础命令使用】查找文件、归档管理、计划任务命令详解
  • 决策树与随机森林Python实践
  • 云原生技术与应用-Docker高级管理--Dockerfile镜像制作
  • STM32之风扇模块(开关控制+PWM调速)
  • 相机:以鼠标点为中心缩放(使用OpenGL+QT开发三维CAD)
  • 动态物体滤除算法
  • 【读书笔记】如何画好架构图:架构思维的三大底层逻辑
  • CTFHub————Web{信息泄露[备份文件下载(vim缓存、.DS_Store)]}