• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Dart Memo for Android Developers

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap