Dart Memo for Android Developers
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的更多相关文章
- 【Android Developers Training】 9. 覆盖于布局之上的Action Bar
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 8. 定义Action Bar风格
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 7. 添加Action Buttons
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 6. 配置Action Bar
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 5. 序言:添加Action Bar
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 4. 启动另一个Activity
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 3. 构建一个简单UI
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 0. 序言:构建你的第一个应用
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 2. 运行你的应用
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
随机推荐
- UVALive8518 Sum of xor sum
题目链接:https://vjudge.net/problem/UVALive-8518 题目大意: 给定一个长度为 $N$ 的数字序列 $A$,进行 $Q$ 次询问,每次询问 $[L,R]$,需要回 ...
- Java学习大纲-0412更新
非科班报培训班学习Java,从博客园,知乎,CNDS上搜了一圈,暂时按以下计划执行,有问题随时更新--0412 1.培训班的课程按时按点学习完成(毕竟掏钱在学的是不,不好好听亏不亏...) keys: ...
- Oracle数字格式化
@ 目录 Oracle数字格式化 开发中的常见问题 数字格式模型元素 Oracle数字格式化 A format model is a character literal that describes ...
- 【JavaScript数据结构系列】07-循环链表CircleLinkedList
[JavaScript数据结构系列]07-循环链表CircleLinkedList 码路工人 CoderMonkey 转载请注明作者与出处 1. 认识循环链表 首节点与尾节点相连的,就构成循环链表.其 ...
- [JavaWeb基础] 031.dom4j写入xml的方法
上一篇我们讲述了dom4j读取xml的4种方法,甚是精彩,那么怎么样写入xml呢?我们直接看下源码实现. public static void main(String[] args) throws E ...
- [转]从 Apple TV 看电视的进化
电视被许多人吐槽为 “几十年没变过的东西”,因此苹果也被寄予厚望能改变这件事物.可惜的是,这种期望在空中飘了这么久,苹果也没玩出多少花样,直到这次发布会 Apple TV 才有了一些值得期待的改进. ...
- Python 每日一练(3)
引言 今天的每日一练,学习了一下用Python生成四位的图像验证码,就是我们常常在登录时见到的那种(#`O′) 思路分析 正如常见的那种图像验证码,它是由数字和字母的随机组合产生的,所以我们首先的第一 ...
- 折腾自己的js闭包(二)
前面我大致探讨了js里的闭包的相关概念,那么,到底在什么时候用它最好呢?存在即真理,只不过以前没发现它而已,先来看看下面的这几个用途吧 一.我首先想到的就是从函数外面访问它的内部变量,从而达到自己的一 ...
- 细说Java多线程之内存可见性笔记
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 说明:多线程的内存可见性涉及到多线程间的数据争用,也涉及到了多线程间的数据可见性 一.共享变量在线程间的 ...
- Java实现 LeetCode 481 神奇字符串
481. 神奇字符串 神奇的字符串 S 只包含 '1' 和 '2',并遵守以下规则: 字符串 S 是神奇的,因为串联字符 '1' 和 '2' 的连续出现次数会生成字符串 S 本身. 字符串 S 的前几 ...