dart

[dart]flutter how to wait map.forEach to complete in Future<void> function?

情到浓时终转凉″ 提交于 2020-11-25 04:03:50
问题 sample code Map<String,String> gg={'gg':'abc','kk':'kojk'}; Future<void> secondAsync() async { await Future.delayed(const Duration(seconds: 2)); print("Second!"); gg.forEach((key,value) async{await Future.delayed(const Duration(seconds: 5)); print("Third!"); }); } Future<void> thirdAsync() async { await Future<String>.delayed(const Duration(seconds: 2)); print('third'); } void main() async { secondAsync().then((_){thirdAsync();}); } output Second! third Third! Third! as you can see i want to

我的2019

China☆狼群 提交于 2020-11-22 07:58:13
再见2019,你好2020 个人 我依旧从事着软件开发工作,头发也知道少没少,反正感觉一直那么多。经过半年多的跑步运动,体重相比年初减少了4,5斤吧,精神状态还算良好。 工作及学习 依然在使用ReactNative跨平台开发框架进行APP的开发工作,完成公司的APP的上线及迭代工作,在踩坑的路上且行且学习。技术领域方面,今年在极客时间上买了一些课进行了学习,比如Spring-Boot, Python, Flutter,TypeScript等,拓展自己的技术领域,也拓展一下自己的技术视野,对于自己的工作影响也是挺不错的,从其中也获得不好新的乐趣,比如利用爬虫爬取一些信息,Flutter感受一下Google的跨平台解决方案,Dart作为其编程语言还是有些入门门槛的。 提升学历学习中,今年也顺利通过了计算机,英语B以及学位英语的考试,希望自己到时候能顺利的取得学历证书和学位。 成长及写作 首先今年开始了微信公众号的创作,创作的初衷是因为自己平时比较喜欢看公众号文章,也希望输出一下自己的想法和实践经验(我是菜鸟),虽然粉丝不不多,但是我非常感谢关注我的公号的每一个人,你们给我了前进的动力; 使用Github和Hexo搭建了自己的技术博客,同步更新自己在CSDN,掘金,简书,开源中国,以及思否上的文章,文章有原创,有翻译,分享自己的所知和自己工作中遇到的问题解决方案;

花椒服务端 gRPC 开发实践

混江龙づ霸主 提交于 2020-11-22 07:33:25
: 8月22日周四上午10点活动邀请 | CNCF网络研讨会:使用容器和无服务器在AWS中进行云原生开发 背景 在移动端平台开发中,为了增加代码复用,降低开发成本,通常会需要采用跨平台的开发技术,花椒也不例外。本次新的单品开发,由于时间紧,人员有限,经过调研选型,最终确定了 flutter 方案(具体选型过程不在本文讨论之内)。 为了让客户端更专注业务实现,降低接口联调测试成本,我们选用了 gRPC 方案。gRPC是一个高性能、通用的开源 RPC 框架,由 Google 开发并基于 HTTP/2 协议标准而设计,基于 ProtoBuf(Protocol Buffers)序列化协议开发,且支持当前主流开发语言。gRPC通过定义一个服务并指定一个可以远程调用的带有参数和返回类型的的方法,使客户端可以直接调用不同机器上的服务应用的方法,就像是本地对象一样。在服务端,服务实现这个接口并且运行 gRPC 服务处理客户端调用。在客户端,有一个stub提供和服务端相同的方法。 gRPC 特点 基于标准化的 IDL(ProtoBuf)来生成服务器端和客户端代码,支持多种主流开发语言。同时可以更好的支持团队与团队之间的接口设计,开发,测试,协作等。 基于 HTTP/2 设计,支持双向流,多路复用,头部压缩。 支持流式发送和响应,批量传输数据,提升性能。 ProtoBuf 序列化数据抓包、调试难度较大

iOS 工程实现native 跳转指定的Flutter 页面

一个人想着一个人 提交于 2020-11-22 06:57:00
概要 在 前一篇文章 中我们提到,iOS跳转到Flutter工程指定页面时(多个),Flutter只有单例,设置setInitialRouter 无效,如下 let flutterViewController = FlutterViewController(engine: flutterEngine, nibName: nil, bundle: nil)! flutterViewController.setInitialRoute( " test1 " ) 基于不是很甘心,一直想实现完美的解决方案,所以最近几天又看了下解决各方面的解决方案,最终还是有了可行方案,步骤如下 1、设置delegate 代码 这里代码 多了 ‘ FlutterBasicMessageChannel ’ 设置,其中 _kReloadChannelName 要和 flutter上的代码保持一致 let _kReloadChannelName = "reload" @UIApplicationMain class AppDelegate: UIResponder , UIApplicationDelegate , FlutterAppLifeCycleProvider{ static var shared: AppDelegate? var window: UIWindow? var