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

作者: 西出玉门东望长安 | 来源:发表于2018-04-30 10:51 被阅读87次

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

    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. 这样看起来非常的清晰. 举例如下.

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

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

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

    2. Asynchrony support:

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

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

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

    3. Isolates:

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

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

    4. Typedefs:

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

    5. Metadatas:

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


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

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

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

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

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

    相关文章

      网友评论

      • 小包包包:楼主, import'package:http/http.dart' as http 报错,提示这个不存在,其他地方需要设置吗

      本文标题:闲话Dart精髓语法7--其他篇

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