Dart Memo for Android Developers

Dart语言一些语法特点和编程规范.

本文适合: 日常使用Kotlin, 突然想写个Flutter程序的Android程序员.

Dart语言

完整的请看A tour of the Dart language

  • 创建对象可以不用new. -> 并且规范不让用new, lint会报错.
  • 声明变量可以用var, 也可以用具体类型如String. 不变量用final, 常量用const.
  • 没有访问修饰符, 用_来表示私有: 文件级别.
  • 字符串可以用单引号'.
  • 语句结尾要用;.
  • 创建数组可以用: var list = [1, 2, 3];.
  • assert()常用来断定开发时不可能会出现的情况.
  • 空测试操作符: ??.
  • 过滤操作符: where.
  • 两个点..表示链式调用.
  • dynamic说明类型未指定.
  • 除了throw异常, 还可以throw别的东西, 比如字符串.

函数

  • 函数返回值在函数最开头, 可以不标. -> 但是规范会建议标注返回值.
bool isNoble(int atomicNumber) {
return _nobleGases[atomicNumber] != null;
}
  • =>箭头符号, 用来简化一句话的方法.
bool isNoble(int atomicNumber) => _nobleGases[atomicNumber] != null;

构造函数

  • 构造函数{}表示带名字, 参数可选, 若要必选加上@required.
const Scrollbar({Key key, @required Widget child})
  • 构造函数名可以是ClassName或者ClassName.identifier.
  • 空构造函数体可以省略, 用;结尾就行:
class Point {
double x, y;
Point(this.x, this.y);
}

这里会初始化相应的变量, 也不用声明具体的参数类型.

  • factory构造, 可以用来返回缓存实例, 或者返回类型的子类:
factory Logger(String name) {
return _cache.putIfAbsent(name, () => Logger._internal(name));
}

异步代码

Future<String> lookUpVersion() async => '1.0.0';

Future checkVersion() async {
var version = await lookUpVersion();
// Do something with version
}

编程规范类

完整的规范在这里: Effective Dart.

有一些Good和Bad的举例, 这里仅列出比较常用的几项.

  • 文件名要蛇形命名: lowercase_with_underscores. 类名: UpperCamelCase.
  • 对自己程序的文件, 两种import都可以(package开头或者相对路径), 但是要保持一致.
  • Flutter程序嵌套比较多, 要用结尾的,来帮助格式化.

本文缘由

年初的时候学了一阵子Flutter, 写了各种大小demo. 结果隔了两个月之后, 突然心血来潮想写个小东西, 打开Android Studio, 首先发现创建Flutter程序的按钮都不见了. (估计是Android Studio4.0升级之后Flutter的插件没跟上).

接着用命令行创建了工程, 打开之后稍微整理了一下心情, 然后就....懵逼了.

突然不知道如何下手.

宏观的东西还记得, 要用什么package, 基本常用的几个Widget都是啥, 但是微观的, 忘了函数和数组都是咋定义的了.

这种懵逼的状态令我很愤怒, 果然是上年纪了吗, 无缝切换个语言都不行.

于是就想着还是写个备忘录吧.

References

Dart Memo for Android Developers的更多相关文章

  1. 【Android Developers Training】 9. 覆盖于布局之上的Action Bar

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  2. 【Android Developers Training】 8. 定义Action Bar风格

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  3. 【Android Developers Training】 7. 添加Action Buttons

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  4. 【Android Developers Training】 6. 配置Action Bar

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  5. 【Android Developers Training】 5. 序言:添加Action Bar

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  6. 【Android Developers Training】 4. 启动另一个Activity

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  7. 【Android Developers Training】 3. 构建一个简单UI

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  8. 【Android Developers Training】 0. 序言:构建你的第一个应用

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  9. 【Android Developers Training】 2. 运行你的应用

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

随机推荐

  1. UVALive8518 Sum of xor sum

    题目链接:https://vjudge.net/problem/UVALive-8518 题目大意: 给定一个长度为 $N$ 的数字序列 $A$,进行 $Q$ 次询问,每次询问 $[L,R]$,需要回 ...

  2. Java学习大纲-0412更新

    非科班报培训班学习Java,从博客园,知乎,CNDS上搜了一圈,暂时按以下计划执行,有问题随时更新--0412 1.培训班的课程按时按点学习完成(毕竟掏钱在学的是不,不好好听亏不亏...) keys: ...

  3. Oracle数字格式化

    @ 目录 Oracle数字格式化 开发中的常见问题 数字格式模型元素 Oracle数字格式化 A format model is a character literal that describes ...

  4. 【JavaScript数据结构系列】07-循环链表CircleLinkedList

    [JavaScript数据结构系列]07-循环链表CircleLinkedList 码路工人 CoderMonkey 转载请注明作者与出处 1. 认识循环链表 首节点与尾节点相连的,就构成循环链表.其 ...

  5. [JavaWeb基础] 031.dom4j写入xml的方法

    上一篇我们讲述了dom4j读取xml的4种方法,甚是精彩,那么怎么样写入xml呢?我们直接看下源码实现. public static void main(String[] args) throws E ...

  6. [转]从 Apple TV 看电视的进化

    电视被许多人吐槽为 “几十年没变过的东西”,因此苹果也被寄予厚望能改变这件事物.可惜的是,这种期望在空中飘了这么久,苹果也没玩出多少花样,直到这次发布会 Apple TV 才有了一些值得期待的改进. ...

  7. Python 每日一练(3)

    引言 今天的每日一练,学习了一下用Python生成四位的图像验证码,就是我们常常在登录时见到的那种(#`O′) 思路分析 正如常见的那种图像验证码,它是由数字和字母的随机组合产生的,所以我们首先的第一 ...

  8. 折腾自己的js闭包(二)

    前面我大致探讨了js里的闭包的相关概念,那么,到底在什么时候用它最好呢?存在即真理,只不过以前没发现它而已,先来看看下面的这几个用途吧 一.我首先想到的就是从函数外面访问它的内部变量,从而达到自己的一 ...

  9. 细说Java多线程之内存可见性笔记

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 说明:多线程的内存可见性涉及到多线程间的数据争用,也涉及到了多线程间的数据可见性 一.共享变量在线程间的 ...

  10. Java实现 LeetCode 481 神奇字符串

    481. 神奇字符串 神奇的字符串 S 只包含 '1' 和 '2',并遵守以下规则: 字符串 S 是神奇的,因为串联字符 '1' 和 '2' 的连续出现次数会生成字符串 S 本身. 字符串 S 的前几 ...