dart(1)

感觉比js难
而且有点不知道怎么入手
但是浅浅记录一下吧,感觉网上的教程写的不咋地,尽量写的详细点
前提
main() – 函数是Dart中的预定义方法,此方法充当应用程序的入口点,Dart脚本需要 main()方法才能执行。
dart中需要以分号结尾
执行程序的方法:dart ./xxx.dart

基本语法
声明
Dart 中的变量使用 var 或明确的数据类型来声明 明确的数据类型包括:
int: 整数类型。
double: 浮点数类型。
String: 字符串类型。 (注意大写哈)
bool: 布尔类型(true 或 false)。
List: 有序集合(数组)。
Set: 无序集合,唯一元素。
Map: 键值对集合。
var name = ‘Bob’;
String name = ‘Bob’;
变量 name 的类型被推断为 String,但你可以通过指定类型来更改它。如果一个对象不受限于单一类型,可以指定为 Object 类型(或在必要时使用 dynamic)。
Object name = ‘Bob’;
不用在声明变量时初始化变量,但是在使用变量之前需要对变量进行初始化
final
在dart中final使用的很多 在 Dart 中,final 是一种用于声明变量的关键字,表示该变量只能被赋值一次。一旦被赋值后,不能再改变其值。final可以在运行时被初始化,但是const声明的变量是编译时常量,必须在声明时赋值,并且无法改变 看一下下面这个例子:
final currentDate = DateTime.now();
这个就是运行时被初始化,但是肯定不能使用const,因为这个变量是在运行时才被初始化的,而且const需要再声明时就给出初始值
final的使用场景
构造函数参数:在类的构造函数中使用 final 使实例变量在创建对象时初始化且不可更改。
class User {
final String name;
User(this.name);
}
在这里就非常适合用final
常量计算:在运行时生成但不需修改的值,例如,使用 final 计算和存储动态生成的数据。也就是我们前面的那个例子
final currentDate = DateTime.now();
导入
Dart web应用程序通常使用Dart:html库,它们可以像这样导入:
import ‘dart:html’;
对于内置库,URI具有特殊的dart:模式。对于其他库,可以使用文件系统路径或package: scheme。
import ‘package:test/test.dart’;
仅导入库的一部分
如果您只想使用库的一部分,您可以有选择地导入库。例如:
// 只导入foo
import ‘package:lib1/lib1.dart’ show foo;

// 导入除了foo以外的所有
import ‘package:lib2/lib2.dart’ hide foo;
安装库
首先,可以去pub.dev,搜索你想要的库
在你的项目的 pubspec.yaml 文件中,添加你想要的库。例如,如果你想安装 provider 库,添加如下内容:
dependencies:
provider: ^6.0.0
安装依赖 在终端中运行:
dart pub get
导入库
import ‘package:provider/provider.dart’;
函数
dart中的函数可以给返回值和参数添加类型,但是省略也是可以的

void main() {
bool isPositive(int num) {
return (num > 0);
}
print(isPositive(2));
print(isPositive(-2));
}
还有一种简略写法就是=> ,他等同于{ return xxx; }
bool isPositive2(int num) => num > 0;
print(isPositive2(2));
print(isPositive2(-2));
两个函数的结果都是一样的
命名参数
void enableFlags({bool? bold, bool? hidden}) {…}
在官方文档中的变量一节,提到了空安全当你为变量、参数或另一个相关组件指定类型时,可以控制该类型是否允许 null 。要让一个变量可以为空,你可以在类型声明的末尾添加? 。
String? name // Nullable type. Can be null or string.
String name // Non-nullable type. Cannot be null but can be string.
因此在函数的可选参数中,用法也一样 如果你不提供默认值或按要求标记命名参数,它们的类型必须为空,因为它们的默认值将为空,在下面的例子中,要么就给默认值,要么加?
bool Func({String a = ‘hihi’, int? b}) {
return true;
}
循环
和js略有不同…挺别扭的hhh
void main() {
[1, 2, 3].forEach((item) {
print(item);
});
}
循环字符串,这个和js的没有什么区别
var message = StringBuffer(‘Dart is fun’);
for (var i = 0; i < 5; i++) {
message.write(‘!’);
}
print(message);
JavaScript:for…of 用于遍历数组和可迭代对象,而 for…in 用于遍历对象的属性。
for (let i = 0; i < 5; i++) {
console.log(i);
}
Dart:for-in 是用来遍历集合(如列表、集合等)的简洁方式,推荐用于数组和集合。
for (var i = 0; i < 5; i++) {
print(i);
}
while
while (!isDone()) {
doSomething();
}

声明变量
class Point {
double? x; // 声明实例变量x,初始值为null
double? y;
double z = 0;
}
当然也可以用final来定义
class ProfileMark {
final String name;
final DateTime start = DateTime.now();

ProfileMark(this.name); // 构造函数,用于创建和初始化类的实例
ProfileMark.unnamed() : name = ”;
}
使用set和get来设置属性和获取属性
void main() {
var p = new People();
p.name = ‘hahah’;
print(p.name);
}

class People {
String? _name; // 私有字段
set name(String value) {
this._name = value;
}

String get name {
return ‘people is $_name’;
}
}

先写到这吧,上班了

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/422231.html

联系我们
联系我们
分享本页
返回顶部