欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Dart入门

程序员文章站 2022-05-30 09:25:32
...

Dart入门

参考:

安装Dart,参考Get the Dart SDK,根据系统来安装
Dart SDK有两个release channels

  • stable channel: stable releases, updated no more frequently than every 6 weeks; 稳定
  • dev channel: prereleases, usually updated 1/week; 开发

在Mac上,使用如下的命令:

 brew tap dart-lang/dart
 brew install dart

参考IntelliJ & Android Studio,为IntelliJ IDEA 和 Android Studio添加Dart支持

Dart入门
一些基础知识参考翻译Dart 编程语言概览

一些重要的概念

1.Dart是面向对象的编程语言,所有的东西都是对象。变量、number、函数都是对象

变量

使用var表示变量

默认值
未初始化的变量默认值是 null

常量和固定值

如果定义的变量不会变化,可以使用final或者const来指名。
const表示的是编译时(compile-time constant)常量

编译时常量和运行时常量
可参考java中的编译时常量与运行时常量

final name = 'Bob'; // Without a type annotation
name = 'Alice'; // Error: a final variable can only be set once.
const bar = 1000000; // Unit of pressure (dynes/cm2)
const double atm = 1.01325 * bar; // Standard atmosphere

注释

文档注释

文档注释可以是多行注释,也可以是单行注释, 文档注释以 /// 或者 /** 开始

类型

Number

Number 有两种类型

  • int
  • double
  int amount1 = 100;
  var amount2 = 200;
  print("amount1: $amount1, amount2: $amount2"); //amount1: 100, amount2: 200

String->Number,或者Number->String

// String -> int
  var one = int.parse('1');
  assert(one == 1);

// String -> double
  var onePointOne = double.parse('1.1');
  assert(onePointOne == 1.1);

// int -> String
  String oneAsString = 1.toString();
  assert(oneAsString == '1');

// double -> String
  String piAsString = 3.14159.toStringAsFixed(2);
  assert(piAsString == '3.14');

String

Dart 字符串是一组 UTF-16 单元序列。 字符串通过单引号或者双引号创建

多行字符串

var s1 = '''
You can create
multi-line strings like this one.
''';

var s2 = """This is also a
multi-line string.""";

raw string
r前缀表示原始字符串

  var s = r'In a raw string, not even \n gets special treatment.';
  print(s); //In a raw string, not even \n gets special treatment.

Boolean

Dart 使用 bool 类型表示布尔值。Dart 只有字面量 true and false 是布尔类型

dynamic

尽管 Dart 是强类型的,但是 Dart 可以推断类型,所以类型注释是可选的。 在上面的代码中, number 被推断为 int 类型。 如果要明确说明不需要任何类型, 需要使用特殊类型 dynamic

  dynamic weakVariable = 100; 
  print("weakVariable is $weakVariable"); //weakVariable is 100

  weakVariable = 'Dart Programming';
  print("weakVariable is $weakVariable"); //weakVariable is Dart Programming

操作符

?.

?.叫做Conditional member access

Like ., but the leftmost operand can be null; example: foo?.bar selects property bar from expression foo unless foo is null (in which case the value of foo?.bar is null)
foo 不为null的时候, foo?.bar获取 foobar属性。如果为nullfoo?.bar的值为null

如下的例子,获取null变量的的某个属性,控制台会提示错误

class Num {
  int num = 10;
}

void main() {
  var n = Num();
  n = null;
  int number = n.num;
}

Dart入门
使用?.就OK了

void main() {
  var n = Num();
  n = null;
  int number = n?.num;
  print(number); //null
}

??

??相当于是?:

condition ? expr1 : expr2
expr1 ?? expr2

例如,给上面的例子一个默认值

void main() {
  var n = Num();
  n = null;
  int number = n?.num ?? 10;
  print(number); //10
}

??=

??=表示在变量为null时赋值

// Assign value to a
a = value;
// Assign value to b if b is null; otherwise, b stays the same
b ??= value;

..

..表示级联操作符(Cascade)。可对同一对象执行一系列操作。类似于Java语言里点点点处理或JavaScript里的Promise的then处理。级联操作的主要的目的是为了简化代码

querySelector('#confirm') // Get an object.
  ..text = 'Confirm' // Use its members.
  ..classes.add('important')
  ..onClick.listen((e) => window.alert('Confirmed!'));

等同于

var button = querySelector('#confirm');
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));

类型测试操作符

操作符 含义
as 类型转换
is 当对象是相应类型时返回true
is! 当对象不是相应类型时返回true
  var num = 10;
  if (num is int) {
    print("integer");
  }
相关标签: Dart