美文网首页Dart
Dart入门教程1

Dart入门教程1

作者: KunHo | 来源:发表于2020-06-20 23:08 被阅读0次

最近需要开发一个app,从文档,社区,时间方面斟酌了一下,最后还是决定用flutter,dart是flutter的主要开发语言,此文为dart学习总结。
阅读此文前最好有点java或者c#之类的基础
参考:https://codelabs.flutter-io.cn/codelabs/from-java-to-dart/#0

1.创建一个简单dart class

我们程序都会有一个主入口(跟java,c#类似),dart也一样,main函数是作为程序的启动入口。我们定义一个名为"Bicycle"的class,里面有会有3个属性,分为"cadence","speed","gear";

class Bicycle {
  int cadence;
  int speed;
  int gear;
}

void main() {
}

假如是java或者c#,我们一般会在"class"或"void"关键字前加上public, private,protected修饰权限,假若不加,会默认为"private";但dart没有这些关键字,dart会默认为"public",如果我们需要用到private,后面将会介绍到‘read-only 变量’

2.定义构造函数

dart的构造函数是写成这个样子的:

Bicycle(this.cadence, this.speed, this.gear);

后面记得加分号";",不然你会收到一个编译错误,我们使用this关键字指向类的属性,这个写法其实就是相当于

Bicycle(int cadence, int speed, int gear) {
  this.cadence = cadence;
  this.speed = speed;
  this.gear = gear;
}

3.创建实例

以前我们创建实例会用到new关键字

var bike = new Bicycle(2, 0, 1);

在dart里,new变成一个可选关键字,可用可不用(感觉好多东西简化了- -:)

var bike = Bicycle(2, 0, 1);

至此,我们先在我们目前的代码运行一下吧,我是用在线编译看效果:https://dartpad.cn/

class Bicycle {
  int cadence;
  int speed;
  int gear;
  
  Bicycle(this.cadence, this.speed, this.gear);
}


void main() {
  var bike = Bicycle(2, 0, 1);
  print(bike);
}

运行上面代码,我们应该能看到控制台输出[Instance of 'Bicycle' ]
注意到我们直接print的是bike实例,其实就是相当于我们java或c#的"object.ToString()"吧,直接把object print出来。

每一个dart类,其实都继承了一个toString方法的,我重写一下toString方法,让它输出我们想要格式:

@override
String toString() => 'Bicycle: $speed mph';

@override其实就是告诉编辑器我要改成你某个成员方法,至于箭头函数"=>"就是简写return 'Bicycle: $speed mph';

3.read-only变量

某些变量我们不想暴露出去让别人随便,在java或c#我们可以private修饰,在dart,我们则要把属性的名字,在开始处加一个"_",但同一个类库下还是可以被其他类访问,假如不同类库则不可以。
然后我们某些属性只希望它读取不能被修改,在java或c#我们会指定属性为get,在dart也类型。
我们现在把speed设置为私有,并提供一个可读取的变量:

int _speed = 0;
int get speed => _speed;

然后修改一下构造函数,把speed参数去掉

Bicycle(this.cadence, this.gear);

自己再加点方法,设置speed的值,完整代码如下:

class Bicycle {
  int cadence;
  int _speed = 0;
  int get speed => _speed;
  int gear;

  Bicycle(this.cadence, this.gear);

  void applyBrake(int decrement) {
    _speed -= decrement;
  }

  void speedUp(int increment) {
    _speed += increment;
  }

  @override
  String toString() => 'Bicycle: $_speed mph';
}

void main() {
  var bike = Bicycle(2, 1);
  bike.speedUp(10);
  print(bike);
}

可以看到输出是:Bicycle: 10 mph

相关文章

网友评论

    本文标题:Dart入门教程1

    本文链接:https://www.haomeiwen.com/subject/lufgxktx.html