Dart way to explore https:https://cdn.v2ex.com/navatar/e945/50c9/742_normal.png?m=1385212827 https:https://cdn.v2ex.com/navatar/e945/50c9/742_large.png?m=1385212827 2024-02-28T12:43:16Z Copyright © 2010-2018, V2EX Dart 中的这个语法特性是什么时候推出的? tag:www.v2ex.com,2024-02-28:/t/1019260 2024-02-28T12:43:16Z 2024-02-28T12:43:16Z easylee member/easylee 今日 IDEA 自动帮我更新了一部分 Fat Arrow 代码,官网描述:

https://dart.dev/tools/diagnostic-messages?utm_source=dartdev&utm_medium=redir&utm_id=diagcode&utm_cOntent=unnecessary_set_literal#unnecessary_set_literal

并且其中的逗号也更新为了分号,请问这个语法特性是什么时候更新的,检索良久未能找到有关信息。

]]> deno 和 dart 好像啊 tag:www.v2ex.com,2020-11-04:/t/721720 2020-11-04T06:39:13Z 2021-04-14T06:12:12Z chenhui7373 member/chenhui7373 ···

import { serve } from "https://deno.land/std@0.76.0/http/server.ts";

const s = serve({ port: 8000 });

console.log("http://localhost:8000/");

for await (const req of s) {

req.respond({ body: "Hello World\n" });

}

···

······

import 'dart:io';

Future main() async {

var server = await HttpServer.bind(

InternetAddress.loopbackIPv4, 8000); 

print('Listening on localhost:${server.port}');

await for (HttpRequest request in server) {

request.response.write('Hello world\n'); await request.response.close(); 

}

}

······

]]>
[转] Dart 服务器端开发 、 Dart 客户端开发 、Dart 浏览器端开发 和 Dart 云开发 tag:www.v2ex.com,2020-04-23:/t/665196 2020-04-23T00:45:55Z 2020-09-23T06:04:41Z chenhui7373 member/chenhui7373
Dart-Aqueduct 框架开发(七)
https://www.jianshu.com/p/6bc41865d946

同一系列
https://www.jianshu.com/nb/28713449

++++++++++++++++++++

客户端开发
Flutter 自制工具之 fluct 助力 Flutter 快速开发神器
https://www.jianshu.com/nb/26841441


+++++++++++++++++++++
浏览器端开发

Web 和 Flutter 工程共享代码的正确姿势
https://zhuanlan.zhihu.com/p/129690348


+++++++++++++++++++++
云开发

http://docs.cloudbase.net/quick-start/flutter.html
https://firebase.google.cn/ ]]>
用 Dart 重写了一个原本用 Javascript 做的小应用 tag:www.v2ex.com,2020-03-29:/t/657404 2020-03-29T17:09:56Z 2020-03-29T19:02:19Z cmdOptionKana member/cmdOptionKana /t/651056 )

最近用 Dart 对其中的 Javascript 代码进行了完全重写。

总的来说,Dart 在这种情景下并没有太多优势。

- dart:html 库为了方便从 js 迁移过来,函数设计得几乎与 js 一模一样,因此用 Dart 重写 js 非常顺利
- 获得了类型安全,这是最大的好处,但没有其它好处了
- Dart 处理 json 有点麻烦

由于我这个程序实在是非常小,因此体会不是很多,最大的感受是几乎和写 js 一样,没多少正在使用一种新语言的新鲜感(或异样感),不知这算 Dart 的优点还是缺点。 ]]>
最近学习 Dart 语言,分享一下心得 (入门级) tag:www.v2ex.com,2020-03-21:/t/654962 2020-03-21T14:42:57Z 2020-03-26T18:00:28Z cmdOptionKana member/cmdOptionKana 每隔一段时间,总有一种新(或较新)的语言进入大家的视线,比如 Kotlin, Rust, Go 等,我查了一下它们的 “出生日期”:

由于 Dart 1 实质上已经被放弃,Dart 2 改动很大几乎就是一种新的语言,因此这里只列出 v2.0 的日期。

一个现象:这些新出的热门语言,都是静态类型语言,其原因可能是现代 IDE 发展起来了。 动态语言最大的优势是 “写起来省键盘”,但在类型推导与现代 IDE 的加持之下, 静态语言写起来不再繁琐,反而动态语言由于更难进行静态分析而难以享受 IDE 提供的更多好处。

言归正传,从上面各语言的日期可见,其中 Dart 2 非常新,这使得它有机会尽情吸收其它语言的经验, 反映出现代编程语言的很多新思想。下面开始说说 Dart 语言的特点。

一切皆对象

甚至连数字都是对象,比如下面的例子,数字可直接调用方法:

// int -> String String OneAsString= 1.toString(); assert(OneAsString== '1'); 

由于一切皆对象,所以任何变量的默认值都是 null,比如:

int n; String s; assert(n == null); assert(s == null); 

代码内测试 (inline testing)

直接在代码内写 assert(), 这个函数只在开发环境中有效,而在生产环境中会被忽略,非常适合用来做一些简单但重要的测试。

类型推导

以前的静态类型语言一般要求每次定义变量时,都明确写明类型,这非常繁琐。 而现在自动推导变量类型这个特性几乎成为了各种新语言的标配,不少老牌语言也在新版中加入这个特性。

var s = 'abc'; assert(s.runtimeType.toString() == 'String'); 

简化访问权限

不通过 public, protected, private 等关键词来表明成员是否对外公开,而是通过首字母来表示。 类似于 Golang, Golang 是用首字母大写表示 public, 但这被很多开发者诟病,确实会带来一些不便。 而 Dart 则是用首字母为下划线来表示 private, 这就比 Golang 那种设定舒服多了,也很符合直觉。

// 这个例子只是为了说明访问权限,并非最佳实践。 class MyClass { int _count; int get count => _count; set count(value) => _count = value; } 

是不是有点像 Python? 但与 Python 不同的是,_count 不是看起来像 private, 而是真的 private !

用问号语法来简化 null 相关操作

这也是新语言中比较流行的一种特性,确实非常好用。

int n; // 此时 n == null, 可以赋值。 n ??= 3; assert(n == 3); // 此时 n != null,保留原来的值。 n ??= 5; assert(n == 3); print(1 ?? 3); // 结果为 1. print(null ?? 5); // 结果为 5. 
myObject?.someProperty // 如果没有问号语法,就会麻烦很多: (myObject != null) ? myObject.someProperty : null 

关于 null 有一个故事,他的发明者曾说这是自己犯下的 “十亿美元错误”(billion-dollar mistake)。 但这么多年过去了,新语言明明有机会采用 “无 null” 设计,却还是选择了有 null, 侧面说明这个发明还是好处多过坏处。

处理列表的常用函数(流式处理)

比如 filter(在 Dart 里是 where), map, any, fold 等等,以前常见于动态类型语言,但由于这些函数确实很方便, 现在很多静态语言里也是标配特性了。

 numbers .where((n) => n % 2 == 0) .forEach((n) => print(n)); 

自动提供 getter, setter

在下面的例子中,xy 拥有默认的 getter 和 setter,非常方便。

class Point { num x, y; Point(this.x, this.y); } var p = Point(1.2, 3); p.y = 2.5; print('${p.x}, ${p.y}'); // "1.2, 2.5" 

Kotlin 也有类似的特性。为什么在已经有了那么多编程语言的情况下,还要不断发明新的语言呢, 原因之一就是这些新特性非常优雅:写起来更方便,读起来更清晰。

异步编程

Future main() async { var ver = await getVersion(); print('In main: version is $ver'); } 

胖箭头函数

如果你曾经主要使用 Javascript, 后来转到别的语言,那么你可能会很怀念那个可爱又实用的胖箭头。 在 Dart 里你可以再次愉快过使用它。

class MyClass { int value = 0; void increase() => value++; } 

串联语法 (Cascade)

Dart 自称是专为客户端(约等于前端)而设计的语言,而这个新颖、高效的串联语法很好地体现了什么叫做 客户端语言,这是 Dart 带给我最大的惊喜!

querySelector('#confirm') ..text = 'Confirm' ..classes.add('important') ..onClick.listen((e) => window.alert('Confirmed!')); 

总结

以上列举了 Dart 的一部分特性,可以看出它吸收了很多新特性,同时考虑了别的语言的使用习惯, 学起来会有一种“似曾相识”的熟悉感,用起来会有一种“要啥有啥”的爽感。

再结合它的强大生命力:通过 Flutter 在手机端生存,通过编译为高质量的 Javascript 代码在网页端生存, 通过编译为二进制可执行文件在桌面电脑端生存,同时也已经被 Google 官方确定为 Fuchsia 的主要编程语言之一。 因此,有兴趣的同学不妨学习一下。

]]>
使用了下 Dart 语言,发现一些特性的设计得非常缜密,例如 List Comprehension tag:www.v2ex.com,2020-03-08:/t/651064 2020-03-08T18:06:44Z 2020-03-09T02:48:30Z yech1990 member/yech1990 就拿大量使用 List Comprehension 的 Python 做比较,

这些特性 Python 需要分为多个 List Comprehension 且外层嵌套逻辑来实现,比如产生这样的一个 List:

( Dart 的实现)

void main() { print([ if (2 > 1) 222 else 333, if (2 > 3) 444, for (int i in Iterable.generate(10)) if (i % 3 == 1) i, for (int i in Iterable.generate(10, (x) => x + 100)) if (i % 2 == 0) i ]); } 

output: [222, 1, 4, 7, 100, 102, 104, 106, 108]

https://dartpad.dev/540d15e9a25afb2159ee1b380e98d906

( Python 的实现)

print( [if (2 > 1) 222 else 333] + ([444] if (2 > 3) else []) + [i for i in range(10) if i % 3 == 1] + [i + 100 for i in range(10) if (i + 100) % 2 == 0] ) 
]]>
js 转 dart 编译器哪家强? tag:www.v2ex.com,2020-02-28:/t/648498 2020-02-28T23:59:38Z 2020-02-29T22:06:02Z Cbdy member/Cbdy Fuchsia OS 预计还有 75 天后发布 tag:www.v2ex.com,2020-02-23:/t/646844 2020-02-23T08:40:52Z 2020-02-24T06:15:36Z chenhui7373 member/chenhui7373 https://fuchsia-china.com/


[ Pigweed ] 有可能是第一个版本代码。(安卓操作系统用的食物作为代号。)


问题来了,Android 翻译成安卓还不错,iOS 直接看 Logo 就叫苹果,

那么 Fuchsia 应该怎么翻译才够 信达雅? ]]>
凑热闹, dart 适合做后台吗 tag:www.v2ex.com,2020-02-05:/t/642389 2020-02-05T14:12:14Z 2020-04-21T10:12:16Z chenhui7373 member/chenhui7373 dart 有pub

dart 的后端框架

  1. jaguar, 有 googler 参与
  2. aqueduct,企业级
  3. angel-dart,喜欢 ror 的小伙子开发

btw,

dart 的 UI 框架

  1. 浏览器 angular
  2. 移动端 flutter

后台管理 UI https://github.com/GeekyAnts/flutter-web-admin-dashbaord https://github.com/HyperionGray/ng_modular_admin https://github.com/kalismeras61/flutter_web_dashboard

]]>
[Flutter/Dart] 关于 dart 异步任务执行顺序的问题 tag:www.v2ex.com,2020-01-30:/t/641023 2020-01-30T09:03:38Z 2020-01-31T01:54:11Z ex1gtnim7d member/ex1gtnim7d import 'dart:async'; main() async{ print("main begin"); a(); print("main end"); } a() async { print("a begin"); await b(); print("a end"); } b() async { print("b begin"); await c(); print("b end"); } Future c() { return new Future(() { print("c"); }); }

上面这段代码的输出结果是:
main begin
a begin
b begin
main end
c
b end
a end

main end 提前执行了,我的理解是,在程序走到 b 函数里面时,一直是在当前线程的,然后遇到 await 语句,等待 c 函数执行完成,所以应该是 c 函数执行完再继续进行下去,请问这样理解有问题吗?

]]>
Flutter 资料分享 tag:www.v2ex.com,2020-01-30:/t/640980 2020-01-30T06:19:15Z 2020-01-30T06:19:15Z chenhui7373 member/chenhui7373 https://flutterchina.club/opensource.html
https://github.com/OpenFlutter
https://github.com/alibaba-flutter

在线布局
https://flutterstudio.app/

嵌入动画?
https://rive.app/explore/popular/trending/all


Dart/Flutter 资料精选中文版
https://github.com/chai2010/awesome-dart-zh


Flutter 提升开发效率的一些方法和工具
https://github.com/LXD312569496/flutter-learing/blob/master/lazy_method.md


早期接触 Flutter 开发者
https://blog.csdn.net/hekaiyou?t=1 ]]>
有没有 Dart 的大佬想要写书的,合作吗? tag:www.v2ex.com,2019-05-30:/t/569146 2019-05-30T07:41:01Z 2019-05-30T07:38:01Z MiYogurt member/MiYogurt 基本写的差不多了,还差一些基础内容,目前正在写 ffi。

假如有人合作的话,可以添加一些 flutter webrtc 的内容,以及 flutter desktop、web 的内容,使书籍更加丰富与权威。

目录在 https://github.com/MiYogurt/DartUp

]]>
Dart/Flutter 资料精选 tag:www.v2ex.com,2018-12-05:/t/514460 2018-12-05T02:57:35Z 2018-12-03T02:54:35Z chai2010 member/chai2010 https://github.com/chai2010/awesome-dart-zh

欢迎关注

]]>
[转] 为什么 Flutter 会选择 Dart ? tag:www.v2ex.com,2018-03-20:/t/439647 2018-03-20T03:13:36Z 2018-04-16T03:42:18Z chenhui7373 member/chenhui7373
http://www.infoq.com/cn/articles/why-flutter-uses-dart

充分说明了,窗口程序没办法还是要 class,虽然 alan kay 后悔发明了 object。 ]]>
Dart 在 fuchsia os 上的应用 tag:www.v2ex.com,2017-10-16:/t/397895 2017-10-16T00:52:50Z 2017-10-16T06:52:38Z chenhui7373 member/chenhui7373 https://github.com/fuchsia-mirror?language=dart

主要用来开发 fuchsia os 上的 APP 了,

未来 5g 时代,能否迎来真 webos ]]>
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86