Flutter01-Dart语法

学习Flutter之前,要先学习一下Dart语法.接下来介绍一下Dart中的语法.
注:本文只介绍Dart的一些其他面向对象语言没有的/有区别的特性来讲解

1.定义变量

定义变量可以明确类型定义如 :
String name = '123';
还可以使用类型推导如:
var/dynamic/const/final 变量名称 = 值
dynamic:可以指向任意类型(编译时不会检查真正的类型,只有到运行时才会检查变量的具体类型,所以使用dynamic时要注意变量类型带来的危险)
const/final:不用多说都是定义常量.区别在于const在赋值时必须在编译期间就确定下来的.而final在赋值时可以动态获取

2.Dart中没有非0即真和非空即真的概念

3.字符拼接

字符串和其他变量拼接使用${表达式},如果表达式只是一个标识符那么{}可以省略

4.运算符

??=赋值运算符:

// 意思是当变量有值时使用原来的值,当变量为null时使用后面的进行赋值操作
var name = null;
name ??= 'jack'

??条件运算符:

expr1 ?? expr2

如果expr1是null,则返回expr2的结果;

如果expr1不是null,直接使用expr1的结果。

5.函数(Dart不支持函数重载)

在Dart中函数是一等公民,所以可以将函数赋值给一个变量, 也可以将函数作为另外一个函数的参数或者返回值来使用.函数也是一个对象用Function表示.
如果函数体内只有一个表达式.可以使用箭头函数如:
int add(int num1, int num2) => num1 + num2
函数的参数:分为必须参数和可选参数(可以不用传值,也可以有默认值).而可选参数又分为命名可选参数位置可选参数.举例如下:

// 1.命名可选参数用{}包裹
int add(int a, {int b, int c});
// 调用时可选参数不分顺序,但是必须指定变量名称来传值
add(10, b: 20)

// 2.位置可选参数用[]包裹
int add(int a, [int b, double c]);
// 调用时可选参数严格遵守顺序
add(10, 1.2, 11)❌
add(10, 11, 1.2)✅

函数的返回值:所有函数都返回一个值.如果没有指定返回值,则语句返回null;隐式附加到函数体中

6.库的导入(使用import关键字)

Dart默认情况下,一个dart文件就是一个模块(库文件)

// 导入系统库以dart开头如:
import 'dart:math';
// 导入第三方库以package开头如:
import 'package:test/test.dart';
// 导入当前项目其他文件以path开头如:
import 'path/to/my_other_file.dart';

7.类

1.由于Dart不支持函数重载,那么想要创建更多的构造函数的话就需要用到命名构造方法

class Animal {
  String name;
  // 普通构造方法
  Person() {
    name = ' ';
  }
  // 命名构造方法
  Animal.withName(String name) {
    this.name = name;
  }
}

2.Dart有C++中的初始化列表的方法来初始化变量

class Shape {
  int height;
  // 初始化列表
  Shape() : height = 0;
}

3.一个构造方法调用另一个构造方法(重定向构造方法),是在:后面用this调用

class Shape {
  int height;
  int weight;
  Shape(this.height,this.weight);
  Shape.withWeight(int weight) : this(0, weight);
}

4.常量构造方法
场景:当我们传入相同的值的时候,希望返回的是同一个对象,就可以使用常量构造方法
默认情况即使传入相同的值创建出来的也不是同一个对象.要使创建出来的是同一个对象,要用const修饰构造方法如:

class Shape {
  final int height;
  const  Shape(this.height);
}

注意点1:拥有常量构造方法的类中,所有的成员变量必须是final修饰的
注意点2:使用常量构造方法时,要使用const代替new关键字

 var s1 = const Shape(100);

5.隐式接口
在Dart中没有一个关键字来声明接口,默认情况下所有类都是隐式接口.
使用关键字implements来实现接口,我们通常将用于给别人实现的类声明为抽象类

6.minin混入
在通过implements实现某个类时,类中所有的方法都必须被重新实现(无论这个类原来是否已经实现过该方法).如果想要复用之前的实现方法.就要用到minin关键字来定义一个类.复用minin定义的类中的方法需要用到with来进行混入:

minin Shape {
  void getHeight() {
  }
}
class Rectangle with Shape {
}

目前先介绍这么多,后期会继续补充

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容