Flutter: Dart快速掌握先

前面

本文遵循google官方教程旨在快速说明和掌握Dart开发语言。并不会进行太详细深入的探讨。

大概印象

  • Rules

    1. 一切皆对象 并继承自Object,不论null, 还是你认为的intint!!! 因此,未初始化值的变量,默认值都是null !!!
      // String -> int
      var one = int.parse('1');
      assert(one == 1);
      
      // double -> String
      String piAsString = 3.14159.toStringAsFixed(2);
      assert(piAsString == '3.14');
      
      List<int> //(a list of integers) 
      List<dynamic> //(a list of objects of any type).
      
    2. Dart是可以转换为js的(最初设计初衷也是为了弥补js缺点)。所以,有些知识点可以和JS类比理解。因此,你就把一些特殊的概念理解为从别的语言抄来的,用来使js更牛逼的 ?
  • 变量
    var xxx = 1
    xxx = 1
    _xxx=1; // 这是私有变量哦!下划线_开头的就是针对【库/app】私有的!
    dynamic name = 'Bob'; //可以赋值任意类型给name。但是!根据编码习惯,最好用 Object 代替 dynamic!!

    var s1 = '''
      You can create
      multi-line strings like this one.
      '''; 		// 多行字符串书写
    
    关于const,你可以把它当作C语言里面的#define预定义, 和C++里面的const ;-)
    例如,var a = 1; const b = 2; var d = const [1, 2];
    const c = "$a不会生效,而$b是生效的,$b会被替换成2哦!"
    d[1] = 3; //这句话会报错哦!!!
    
    // Check for NaN.
      var iMeantToDoThis = 0 / 0;
      assert(iMeantToDoThis.isNaN);
    
  • 函数

    func1(int p) {
        println('print param: ${ p + 1 }'); // 看到了吗?字符串中不光可以引用变量,还能做表达式!
    }
    
    // 函数也是对象!也可以作为参数传递。
    // !!因此,函数可以嵌套函数,对不对 ;-) 
    Function func1({bool param1=false}, bool param2, [bool optionalParam=false, bool optionalParam2]) {
        return (num i) => addBy + i;
    }
    //闭包的概念了解一下。
     
    

    typedef Compare = int Function(Object a, Object b);

  • 操作符

意思操作符
是否是null??
关系判断>= > <= < as is is!
做除法后,返回int~/
条件成员访问, 如 b = foo?.a; foo?.a = 4;?.
  • try-catch-finally
try {
  //xxxxx
} on OutOfLlamasException {
  //xxxx
  rethrow; // 可以继续抛
} finally {
  // Then clean up.
}
  • 类 - class
  1. 默认构造函数是 无参 构造函数。
  2. 构造函数不会继承!不提供,就用默认,甭想白拿!想用父类的哪个构造函数构造自己,就实现哪个同名构造函数。
  3. 初始化顺序(无参调用):
1. initializer list  // 有点类似c++的初始化列表
2. superclass’s no-arg constructor  // 父类无参构造
3. main class’s no-arg constructor  // 子类无参构造
  1. get / set 成员变量
  num get right => left + width;
  set right(num value) => left = value - width;
  1. 擦!操作符可以重载。
  2. 擦!noSuchMethod()。但不要在dynamic乱调。
  3. 擦!还有mixin对象, 用with使用。class Maestro extends Person with Musical, Aggressive, Demented
  4. call()成员函数很特别,当你在类中定义了它,该类的实例变量可以想函数一样调用它classInstA(x,y);
  • 泛型。好像没啥特别想提的。
  • import
import 'package:lib2/lib2.dart' as lib2;

// Import only foo.
import 'package:lib1/lib1.dart' show foo;

// Import all names EXCEPT foo.
import 'package:lib2/lib2.dart' hide foo;

// Lazily loading a library
import 'package:greetings/hello.dart' deferred as hello;
Future greet() async {
  await hello.loadLibrary();
  hello.printGreeting();
}
  • 异步操作 (ES6)
    1. Future:async/await
    2. Stream:await for
  • 迭代器(关键字:sync*, async*, yield)
    1. 同步迭代器:返回 Iterable 的对象.
    2. 异步迭代器:返回 Stream 的对象。
    3. yield*:必须作用于Iterable或者stream的子序列。

Dart的库非常丰富

可先参见:https://www.dartlang.org/guides/libraries/library-tour

关于Dart的编码规范等

可以看看:https://www.dartlang.org/guides/language/effective-dart

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小涵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值