闲话Dart精髓语法7--其他篇

闲话Dart精髓语法6--泛型篇 -

闲话Dart精髓语法7--其他篇_第1张图片
Dart Logo

好了, 各位小伙伴们, 时间过得真快, 已经进入我们这个系列的最后一篇. 这一篇里我们总结一些杂七杂八的东西. 也为我们的Dart语法糖之旅画个句号.

好了, 分隔线后我们进入正题. 


1. Libraries and visibility:

    a. Dart是通过Libraries来帮助我们创建模块化的code base的. Libraries不仅仅是用来提供API的. 因此我们可以用_来标注一个东东是不是内部的. 

    b. 重要的事情戳三遍!!! Dart里每一个App都是Library. 因此我们也没有一个关键字来区别App和Library. 

    c. Dart用import来导包. 

    d. Specifying a library prefix. 我们可以用as来定义导入一个lib的prefix. 这个非常好用. 在Flutter中, 我们通常导包http的话都会写成 import'package:http/http.dart' as http. 这样看起来非常的清晰. 举例如下.

闲话Dart精髓语法7--其他篇_第2张图片

    e. Importing only part of a library. 我们可以用show和hide来决定在导包的时候来只导部分包.

闲话Dart精髓语法7--其他篇_第3张图片

    f. Lazily load a library. 我们用deferred as来lazily导包. 这样导包的好处蛮多的. 一个非常明显的好处就是可以在init的时候省时间. 

    g. Use a lazily loaded library. 如何使用呢, 我们要用到async了. 并且要invoke loadLibrary(). 什么? 你没用过async, 没关系, 我们马上要说到async了.

闲话Dart精髓语法7--其他篇_第4张图片

2. Asynchrony support:

    a. Dart对于Async的支持是非常好的. 这点跟Kotlin一样. 我一直觉得, Async block是非常狗的. 因此要么我们用Rx转换包装. 要么coroutines. 说白了, 其实我们都是想追求如何用同步的方法来写异步. 毕竟Async block实在是太难看了. 木有啥美感. 额, 扯远了. 马上扯回来.

    b. 用await来返回一个Future, 这是我们在Dart里的写法. 重要的事情戳三遍!!! await一定要写在async function里.

闲话Dart精髓语法7--其他篇_第5张图片

    c. 我们可以多次await. 如下图. 一个await的产出是另一个await的input.

闲话Dart精髓语法7--其他篇_第6张图片

3. Isolates:

Dart没有多线程的说法, 如果我们想在background做一些事情的话, 要用到isolate. 这个在Flutter中, 我们通常用于加载图片. 

这里要注意的事, 我们需要保证不要跨isolates来访问state. 

4. Typedefs:

在Dart里, 因为function也是object, 所以我们可以给function起别名. 如下图举例.

闲话Dart精髓语法7--其他篇_第7张图片

5. Metadatas:

这个超级有用了, 我们可以用metadata来提供额外信息. 像@deprecated啊, @override啊. 都是很常用的. 而且在Flutter里, 我们经常使用的一个是@required. 

闲话Dart精髓语法7--其他篇_第8张图片

好了, 各位小伙伴们听着我唠唠叨叨的扯了7篇, 算是把Dart的基本语法过了一遍. 

这个闲话Dart系列, 今天应该是终篇了. 当然如果在学习Flutter的过程中, 我看到了什么有意思的需要着重记录在Dart这边的话, 还是会放到这个系列中的.

不论你是不是一个Flutter的狂热爱好者, 如果不经意间在我这个小系列里流连一瞥, 希望你都能有所收获.

当然code还是要多写多看的, 欢迎移步闲话Flutter之初始 - . 和我一起来玩Flutter. 

欧了, 谢谢观赏, 大家加油!

你可能感兴趣的:(闲话Dart精髓语法7--其他篇)