flutter学习二:dart基本使用

  • dart官方地址

基本

  • 一切都是对象,每个对象都是类的实例(包括null),所有类都继承自object
  • 指定数据类型和编译时常量可以提高运行效率
  • dart没有作用域,以“_”开头表示方法或者属性为私有的
  • 未被初始化的都会被赋值为:null

关键字

  • var:变量
  • dynamic:不指定类型
  • final:常量
  • const:编译时常量

內建数据类型

num

  • 子类:int,double
  • 包含操作(+,-,*,/,<<,>>,|)
  • int (-2^53 - 2^53)
  • double

String

  • 字符串插值

    $variableName

  • 可用:+

  • 可以使用三个‘ 或“来定义多行的String 类型
    var s1 = ”’
    this can change
    in next line.
    ”’

bool

  • true
  • false

List

var list = [A,B,C];

Map

  • 创建

    var name = {
    ‘firstname’ : ‘long’,
    ‘secondname’: ‘wen’,
    ‘thirdname’ : ‘jiang’
    };

  • 或者:
    var name = new Map();
    gifts[‘firstname’] = ‘long’;
    gifts[‘secondname’] = ‘wen’;
    gifts[‘thirdname’] = ‘jiang
    ‘;

函数

如果函数只有一条语句可以:=>

入参

  • 可选:
String getName(String firstname, String secondname, [String thirdname]) {
  var name = '$firstname $secondname';
  if (thirdname != null) {
    name = '$name $thirdname';
  }
  return name;
}
  • 参数默认值(调用时可以不写入参)
String getName1({String firstname: "long", String secondname : "wen"}) {
  var name = '$firstname $secondname';
  return name;
}

传递函数给函数

printElement(element) {
  print(element);
}
var list = ["long", "wen", "jiang"];
list.forEach(printElement);

被嵌套的函数可以访问外层变量

函数返回值

  • 所以的函数都会有返回值。
  • 如果没有指定函数返回值,则默认的返回值是null。
  • 没有返回值的函数,系统会在最后添加隐式的return 语句

操作符

算术操作符

  • 和java类似
  • 支持自增自减操作

类型比较操作符

  • is:来比较前操作数是否是后操作数的对象。
  • as:将前操作数指定为后操作数的类型。

条件表达式

  • 三目

联级操作符

  • (..) 可以重复操作统一对象

流程控制

if and else

for loops

while and do-while loops

break and continue

switch and case

assert:断言

assert(text != null);

  • assert 判断的条件可以是任何可以转化为 boolean 类型的对象,即使是函数也可以(此时判断的是函数返回值)。

  • 如果assert 的判断为true, 则继续执行下面的语句。反之则会丢出一个异 AssertionError 。

try-catch and throw

对象

创建对象

  • 创建类
class Point {
  num x;
  num y;
}
  • 创建对象并赋值
var point = new Point();
point.x = 4; 
assert(point.x == 4); 
assert(point.y == null); //默认为null
  • 构造函数(默认有无参构造函数)
class Point {
  num x;
  num y;
  Point(this.x, this.y);
}
  • 类初始化顺序:
    • 初始化器列表
    • 超类的无参数构造函数
    • 主类的无参数构造函数
  • 静态方法

static num distanceBetween(Point a, Point b) {
    var dx = a.x - b.x;
    var dy = a.y - b.y;
    return sqrt(dx * dx + dy * dy);
  }
  • (?.)判断是否为空
    p?.y = 4;

  • 使用库

    import ‘package:flutter/material.dart’;

  • 库命名

    import ‘package:lib2/lib2.dart’ as lib2;

  • 懒加载库

    import ‘package:greetings/hello.dart’ deferred as hello;

  • 懒加载库使用
    await hello.loadLibrary();
    hello.printGreeting();

异步

  • async
  • await
main() {
//  test1();
//  testClass();
    testSync();
}

/*
* 异步方法 async, 虽然异步函数可能会执行耗时的操作,但不会等待这些操作。
* 相反,异步函数仅在遇到第一个await表达式(细节)时才执行。然后它返回一个Future对象,
* 仅在await表达式完成后才恢复执行
* */
Future testSync() async {
  try{
    var version = await lookUpVersion();
    print(version);
  }catch(e){

  }
}
int lookUpVersion() {
  return 2;
}

注释

  • 单行://
  • 多行:/内容/
  • 文档

你可能感兴趣的:(flutter)