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 ...
随机推荐
- Vue的双向绑定原理
Vue的构造函数分析 vm就是MVVM中的View Model var vm = new Vue({ el: '#app', data: { message: 'Hello Vue!' } }) /* ...
- 关于Java Web结构和SSM框架的理解
Java Web常见的三层结构 表现层:也就是Web层,常见的框架有Spring MVC.Struts2 ,并包括用于展示的界面,如JSP界面:业务层:Service层,专注于业务逻辑的实现:持久层: ...
- 读Pyqt4教程,带你入门Pyqt4 _002
在这节教程中,我们将创建菜单和工具栏. QMainWindow 类提供应用程序主窗口,可以创建一个经典的拥有状态栏.工具栏和菜单栏的应用程序骨架. 菜单栏 菜单栏是GUI应用程序最明显的部分之一,这是 ...
- windows+vs2017+C语言 引入mysql.h对MYSQL数据库的操作
mysql.h文件用作VS开发用,用来连接数据库.没有mysql.h文件,就无法调用mysql的东西 也无法用C语言对MYSQL操作. 一般安装了mysql之后,这个文件就在mysql目录的inclu ...
- 关于hexo-blog-encrypt插件输入密码后无响应的问题
解决方案:更改网站为https协议 具体请查看: https://github.com/MikeCoder/hexo-blog-encrypt/issues/114
- 循序渐进VUE+Element 前端应用开发(6)--- 常规Element 界面组件的使用
在我们开发BS页面的时候,往往需要了解常规界面组件的使用,小到最普通的单文本输入框.多文本框.下拉列表,以及按钮.图片展示.弹出对话框.表单处理.条码二维码等等,本篇随笔基于普通表格业务的展示录入的场 ...
- jchdl - GSL实例:HalfAdder
https://mp.weixin.qq.com/s/Y97bIro7UlPPFCoPlzgmOQ 半加器电路是指对两个输入相加,输出一个结果位和,没有进位输入的电路. 是实现两个一位二进制数的加法运 ...
- Chisel3 - util - LFSR16
https://mp.weixin.qq.com/s/DSdb4tmRwDTOki7mbyuu9A 实现16位线性反馈移位寄存器.可用于生成简单的伪随机数. 参 ...
- 居然还有人这样解说mybatis运行原理
目录 Mybatis基本认识 动态代理 JDK实现 CGLIB动态代理 总结 反射 Configuration对象作用 映射器结构 sqlsession执行流程(源码跟踪) Executor Stat ...
- Java实现 LeetCode 779 第K个语法符号(递归)
779. 第K个语法符号 在第一行我们写上一个 0.接下来的每一行,将前一行中的0替换为01,1替换为10. 给定行数 N 和序数 K,返回第 N 行中第 K个字符.(K从1开始) 例子: 输入: N ...