40分钟快速入门Dart基础(上)

教大家快速学习一门新语言: 

  • 第一是零基础:那我们只能靠自己脚踏实地的多写多想慢慢熟悉你所选择的语言 ,没有别的办法。(但是dart确实目前为止最好学的没有之一的语言)
  • 第二是有基础:小伙伴们如何快速学习一门新语言,其实很简单,我们可以根据我们当前所掌握或者熟悉的语言对比,比如:js、java、swift等等任意一门都可以,那么剩下来我们只需要掌握与之不同的语法,然后在靠自己多写多想慢慢熟悉。

一、开篇(请记住并了解这些万能的规则)

  • 一切变量皆是对象,每个对象都是类的实例。int、double、函数、 null 等都是对象,所有对象都继承自 Object 类
  • Dart可基于AOT(Ahead Of Time)编译,即编译成平台的本地代码,运行性能高。
  • Dart也可基于JIT(Just In Time)编译,编译快速,可热加载,使开发周期加倍提升(Flutter亚秒级有状态热重载)
  • Dart可以更轻松地创建以60fps运行的流畅动画和转场。Dart在没有锁的情况下进行对象分配和垃圾回收
  • Dart语法结合Java与JavaScript语法特点,几乎没有令人不适的怪异语法,使Java程序员倍感亲切,快速上手
  • Dart 没有关于 public、protected、private 的关键字。通过为变量标识符添加下划线前缀,表明该标识符对其库是私有的
  • Dart支持顶级函数、静态函数、实例函数,也允许在函数中嵌套函数,即局部函数。类似的,dart 也支持顶级变量、静态变量和实例变量
  • Dart 是强类型语言,但由于具备类型推导功能所以类型声明是可选的

二、Dart快速入门基础目录:

本文分三节讲解:

| 章节 | 介绍 | | ---- | ---- | | | 上: | | | 中: | | | 下: |

三、开发工具选择

编译器主要采用Android Studio编译器

同时按照国际惯例使用Dart完成一个:"Hello,World!" 并输入运行结果:

import 'dart:core';

void main() {
  print('Hello,World');
}

四、变量

Dart中定义变量有两种方式: 一、静态类型语言常用的方式,显式指定变量类型。 二、动态语言的常用方式,不指定类型,由vm自动推断。

一切变量皆是对象,每个对象都是类的实例。int、double、函数、 null 等都是对象,所有对象都继承自 Object 类。下面我们看看如何声明变量:

变量是一个引用,未初始化的变量值是Null如下。

import 'dart:core';

void main() {
 String name;
 print('$name'); //输出为null
}

上面我们提到了显示指定变量类型如下:

import 'dart:core';

void main() {
 String name ="黄药师";
 int age =10;
 print('$name''----$age'); //输出:黄药师----10
}

动态语言的常用方式,不指定类型,由vm自动推断。

import 'dart:core';

void main() {
 String name ="黄药师";
 name  ='周伯通';
 print('$name'); //输出:周伯通
}

Dart 语言是强类型语言,无法将一个已声明具体变量类型的变量赋值为另一个无继承关系的变量

import 'dart:core';

void main() {
 String name ="黄药师";
 name  =10;
 print('$name');
}

这种赋值的时候就会报错:

import 'dart:core';

void main() {
 int age =10;
 age  =10.0; //这种在赋值的时候就已经报错
 print('$age');
}

但是这个地方有个需要注意的地方就是int 和double 类都是num的子类如下面写法是合法。

import 'dart:core';

void main() {
 num age =10;
 age  =10.0; //这种在赋值合法
 print('$age');
}

1、var(官方风格指南建议使用var)

var:在声明变量在赋值的那一刻,就已经决定了它是什么类型。

上面这句话是什么意思尼?其实很简单:

import 'dart:core';

void main() {
  //age 已经确定为num类型并为其赋值18岁,如果你赋值字符串,那么就会报错
 var age =18;
 age  ='18';
 print('$age');
}
import 'dart:core';

void main() {
  //age 已经确定为num类型并但是没有为其赋值,如果你赋值字符串那么是正确
 var age;
 age  =18;
 age ='18';
 print('$age');
}

2、Object

一切变量皆是对象,每个对象都是类的实例。int、double、函数、 null 等都是对象,所有对象都继承自 Object 类

import 'dart:core';
void main() {
 Object age ='18';
 age  =18;
 print('$age');
}

3

<think>好的,我现在需要帮助用户快速入门Dart语言。首先,我要确定用户的需求是什么。他们可能是一个刚开始学习编程的新手,或者有其他语言经验想快速掌握DartDart常用于Flutter开发,所以可能用户对移动应用开发感兴趣。 接下来,我应该从基础开始介绍。Dart的基本语法、变量声明、数据类型这些是必须的。变量声明有var、final、const,需要解释清楚它们的区别,比如final和const都是不可变的,但const是编译时常量,而final是运行时常量。这可能容易混淆,需要例子说明。 然后是数据类型,Dart有int、double、String、bool这些基本类型,还有List和Map这样的集合类型。要给出简单的例子,比如List的定义和操作,Map的键值对示例。 接下来是函数部分,Dart的函数特性,比如可选参数、命名参数、箭头函数。需要说明函数可以作为参数传递,这是高阶函数的特性,可能对用户理解异步编程有帮助。 控制流程部分,if-else、for循环、while循环,这些和其他语言类似,但可能需要提到forEach和迭代器的使用,比如for-in循环。还有switch语句,但Dart的switch不支持fall-through,需要特别注意。 面向对象方面,Dart是单继承的,使用mixin来实现多重继承。要解释类和对象的创建,构造函数的几种写法(默认、命名构造函数等),继承的使用,以及mixin的用法。这部分可能比较复杂,需要简洁的例子说明。 异步编程是Dart的重要部分,特别是Future和async/await。需要解释如何处理异步操作,避免回调地狱,给出async和await的示例代码。可能还要提到Stream,但快速入门的话,可能暂时不需要深入。 最后,工具和资源部分,推荐安装Dart SDK,使用IDE如VS Code或Android Studio,以及官方文档和练习场所如DartPad。这部分帮助用户开始实际编写代码。 需要确保所有代码示例正确,符合Dart的语法规范。比如,在函数部分,箭头函数只能用于单行表达式,这点要明确。另外,异步示例中,main()函数标记为async,并使用await,是否正确? 还需要检查是否有遗漏的重要概念,比如空安全,这是Dart的重要特性,应该在变量声明或数据类型部分提到。比如,Dart默认是空安全的,变量不能为null,除非显式声明为可空类型,如int?。 可能用户在使用Flutter时会遇到Dart的特定模式,比如Widget树和状态管理,但快速入门可能不需要涉及Flutter特定内容,保持语言本身的重点。 要确保结构清晰,分点讲解,每个部分都有示例代码,并且用中文解释清楚。避免使用专业术语过多,必要时解释术语。例如,解释mixin时,可以简单说明它是一种在多个类层次结构中复用代码的方法。 最后,总结部分要鼓励用户动手实践,并指出进一步学习的资源。确认所有代码片段正确,格式正确,使用$$...$$和$...$符合要求,数学表达式这里可能用不上,但如果有数字计算相关内容,需注意格式。 现在,把这些思路整理成一个结构化的回答,确保每个部分简明扼要,覆盖Dart的核心知识点,适合快速入门。</think>以下为Dart语言快速入门指南(基于Dart 3.x版本): $$ \text{核心学习路径 = [基础语法] → [函数] → [面向对象] → [异步编程]} $$ ### 一、基础语法 1. **变量声明** ```dart var name = 'Dart'; // 类型推断 String name = 'Dart'; // 显式类型 final PI = 3.14; // 运行时常量 const version = '3.0'; // 编译时常量 int? age = null; // 可空类型(空安全特性) ``` 2. **数据类型** ```dart // 基础类型 int num = 10; double price = 99.99; bool isActive = true; String text = 'Hello'; // 集合类型 List<int> list = [1, 2, 3]; Map<String, dynamic> user = { 'name': 'Alice', 'age': 25 }; ``` ### 二、函数使用 ```dart // 基础函数 int add(int a, int b) { return a + b; } // 箭头函数(单行表达式) double circleArea(double r) => 3.14 * r * r; // 可选参数 void printInfo(String name, [int? age]) { print('$name ${age ?? '未知年龄'}'); } // 命名参数 void connect({required String host, int port = 8080}) { print('连接$host:$port'); } ``` ### 三、面向对象编程 ```dart class Animal { String name; Animal(this.name); // 构造函数简写 void eat() => print('$name正在进食'); } // 继承 class Cat extends Animal { Cat(String name) : super(name); @override void eat() { super.eat(); print('吃鱼'); } } // Mixin(多重继承) mixin Flyable { void fly() => print('飞行中'); } class Bird extends Animal with Flyable { Bird(super.name); } ``` ### 四、异步编程 ```dart // Future基本使用 Future<String> fetchData() async { await Future.delayed(Duration(seconds: 2)); return '数据加载完成'; } void main() async { final data = await fetchData(); print(data); // Stream处理 Stream<int> countStream() async* { for (int i = 1; i <= 5; i++) { await Future.delayed(Duration(seconds: 1)); yield i; } } await for (final num in countStream()) { print(num); } } ``` ### 五、开发工具 1. **环境搭建** - 安装Dart SDK:[https://dart.dev/get-dart](https://dart.dev/get-dart) - IDE推荐:VS Code(安装Dart插件)或Android Studio 2. **学习资源** - 官方文档:[https://dart.dev/](https://dart.dev/) - 在线练习:[DartPad](https://dartpad.dev/) $$ \text{练习建议:从控制台程序入手,逐步过渡到Flutter应用开发} $$ 通过以上内容的学习和实践,您可以在1-2天内掌握Dart基础用法,后续可结合Flutter框架进行跨平台应用开发。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值