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 ...
随机推荐
- PAT-1018 Public Bike Management(dijkstra + dfs)
1018. Public Bike Management There is a public bike service in Hangzhou City which provides great co ...
- Create First Application
Node.js创建第一个应用 Node.js开发的目的就是为了用JavaScript编写Web服务器程序, 在使用Node.js时,不仅仅是在实现一个应用,同时还实现了整个HTTP服务器.在创建Nod ...
- python之module 'unittest' has no attribute 'TestCase' 解决方案
脚本报错如下: 解决方案: 这是脚本名称冲突所导致的报错,修改脚本名中重新执行,运行正常 注:脚本取名最好不要与模块和方法一致,避免不必要的冲突
- spring的动态代理实现
Host.java package cn.zys.dynamiproxy; public class Host implements Rent{ public void rent(){ System. ...
- mysql中的联合查询(内联、左联、外联、右联、全联)
转 https://www.cnblogs.com/withscorpion/p/9454490.html 联合查询效率较高,举例子来说明联合查询:内联inner join .左联left oute ...
- JSP+SSM+Mysql实现的图书馆预约占座管理系统
项目简介 项目来源于:https://gitee.com/gepanjiang/LibrarySeats 因原gitee仓库无数据库文件且存在水印,经过本人修改,现将该仓库重新上传至个人gitee仓库 ...
- 7z命令行简单使用
7z命令行简单使用 网上有很多博客都有记录7z的命令行使用方式,但看起来乱起八糟的,不知所云. 急于使用者可以直接看实例 注:我仅仅记录我认为常用的命令,毕竟没有那么多的精力去学习不常用的东西. 简介 ...
- 前端 vue-cli+Webpack 项目开发环境配置、创建一个vue-demo
一.软件及命令: (1)下载node.js 最新的LTS 版本,下载 msi格式的(直接点击安装即可). (2)命令1:npm install cnpm -g 命令2:cnpm install web ...
- 03 . Redis集群
Redis集群方案 Redis Cluster 集群模式通常具有 高可用.可扩展性.分布式.容错等特性.Redis分布式方案一般有两种 客户端分区方案 客户端 就已经决定数据会被 存储到哪个 redi ...
- 50个SQL语句(MySQL版) 问题十
--------------------------表结构-------------------------- student(StuId,StuName,StuAge,StuSex) 学生表 tea ...