这个用户很懒,还没有个人简介
私信
主帖 17
回帖
视频
提问
回答
资源
专栏
在工作中我们可能会写出以下代码:classMyExampleStateextendsState<MyExample>{boolloadingfalse;Datadata;overrideWidgetbuild(BuildContextcontext){returnScaffold(body:loadingconstCircularProgressIndicator():(datanullconstText('errorarea'):constText('contentarea')),);}}这样的三元表达式看起来很丑,如果条件再多点,就很难维护了。如果你对Dart语言了解得比较深的话,应该知道在Dart的集合中是可以使用if、for循...
2022-07-08 17:19:20 229浏览 0点赞 0回复 0收藏
最近几年开源界刮起了一阵歪风,那就是刷GitHubstar。这种行为严重违背开源精神,严重扰乱开源社区秩序,严重破坏开源生态。百害而无一利。据我的了解,不光是个人会刷star,某些大厂也在刷,为了一探究竟,前段时间我以卧底的身份和某宝提供GitHub周边服务的商家展开了如下对话(对话中我的言辞纯属虚构):从言谈中可以看出卖家并不觉得自己在做恶心的事情,相反他们很引以为荣:他们的这一挺身而出可能会让中国开源走向失业...
2022-07-08 17:19:10 235浏览 0点赞 0回复 0收藏
前言我会用两篇文章来讲透声明式UI,分别是《给移动开发者的声明式UI入门手册》,《UI开发的革命,声明式UI到底好在哪里?》,今天这篇文章是第一篇,第二篇什么时候能发出还不确定,欢迎关注本公众号以及时接收推送。命令式UI的由来和声明式UI相对应的是命令式UI,也就是我们传统的UI编程模式。在声明式UI(响应式UI)这个概念还没出现之前,我们似乎并没有将其称作命令式UI。它好像是为了甄别两者的不同而凭空造出的概念。在...
2022-07-08 17:18:38 317浏览 0点赞 0回复 0收藏
我对这个问题进行过深入的思考,我的答案是不一定。社会经济活动的本质是人们从自然界中获取原材料,使用人工或机器进行加工,最终制造出供人们使用的各种商品。尼古拉斯·方兵(hackware)每当新技术出现时,往往伴随着生产率的提高。生产率的提高意味着雇主可以雇佣更少的人来生产出更多的商品,这在前期必然导致失业。因为全社会对商品的消费能力是趋于稳定或缓慢增长的,雇主的商品产量提高但销路不提高的话,雇主就会裁员...
2022-07-08 17:18:28 187浏览 0点赞 0回复 0收藏
这个问题是我最近做业务开发和业余开发都遇到的,这里的angle指的是旋转弧度。不是旋转角度。先看一下我使用angle的场景吧:任务进度报警类型分布指针的旋转角度图一中使用了canvas.drawArc,传入了startAngle和sweepAngle。图二也是如此。图三是FlutterConstraintLayout中圆形定位的example,我没有使用FlutterConstraintLayout自带的旋转能力,而是用了Transform.rotate,传入了angle。FlutterConstraintLayout自带的对Widget...
2022-07-08 17:18:14 255浏览 0点赞 0回复 0收藏
简介PVState全称是PresenterViewState。是我创造的一种全新的声明式UI下的架构模式,从目前看来,我认为它是声明式UI下最好的架构模式。它包含PState和VState。这里的State指的是StatefulWidget的State。这个模式是从传统的MVC、MVP、MVVM推演出来的,因此有必要对各个传统架构模式进行分析,看它们为什么会存在?解决了什么问题?我先抛出一个结论:在PVState架构没有出现之前,MVC是声明式UI下最好的架构模式。MVCMVC的全称是...
2022-07-08 17:17:57 232浏览 0点赞 0回复 0收藏
这个问题网上有不少答案,都差不多。我也有一台自己的云服务器,是阿里云最低配的那种,1核2G,1MB带宽。我是在阿里云做活动的时候买的,一次性买了4年,只需要200多块钱,非常的便宜。今天来谈一谈我都用它干了哪些事情吧。我用它做了以下事情:1.部署了自用的Mock服务2.部署了内网穿透服务:远程ADB,远程桌面3.部署了几个网站:儿子的个人主页,FlutterFirst官网,将来还会部署weiV的官网4.部署了中继服务用来加速我家的宽带...
2022-07-07 17:15:04 341浏览 0点赞 0回复 0收藏
我计划开发一个操作系统和编译器,先看操作系统。操作系统Flutter的势头发展迅猛,已经有几十万的移动应用采用Flutter开发。前不久发布的Flutter3.0已经稳定支持Windows、Linux、MacOS、Android、iOS、Web六个端。我极其看好它,我认为未来大前端将有80%的UI采用Flutter构建。实现这个目标快则5年,长则10年。Flutter不仅仅是个跨平台的UI框架,它还是Google新系统Fuchsia的默认UI框架。Flutter大量普及之后,我认为意味着99%的...
2022-07-07 17:14:44 187浏览 0点赞 0回复 0收藏
weiV(发音同wave)wave.webpif("weiV""View".reversed()){Log.d("weiV","它意味着控制反转,你始终应该直接操作UI的描述Widget而不是直接操作View。")}它具有以下优势:1.声明式的UI写法让原生开发效率翻倍2.达到或超越View系统的性能1.我将我的FlutterConstraintLayout移植到Android,依托它先进的布局算法,在不引入固有特性测量的情况下,让View树中的子元素在任何情况都只会被layout一次,使得任意嵌套不会引起性能问题。...
2022-07-07 17:14:16 281浏览 0点赞 0回复 0收藏
说明开放式语法是我发明的新词,它是啥意思呢?我们看看代码就明白了。classOpenGrammarExampleextendsStatelessWidget{constOpenGrammarExample({Keykey}):super(key:key);overrideWidgetbuild(BuildContextcontext){returnScaffold(body:ConstraintLayout().open((){if(DateTime.now().millisecond%20){Container(color:Colors.red,).applyConstraint(size:200,centerTo:parent,);}else{Container(color:Colors.yellow,).appl...
2022-07-07 17:14:03 813浏览 0点赞 0回复 0收藏
昨天早上突发奇想就开干,现在展示一下最新的开发成果。DSL样式如下:classMainActivity:WeiVActivity(){privatevarswitchfalseprivatevartext"weiV"overridefunbuild():Widget{returnWeiV{Flex(orientationLinearLayout.HORIZONTAL){Text(texttext,textSize14f)Text(texttext)Flex(keyKey(),orientationLinearLayout.VERTICAL){if(switch){Text(texttext)}else{Text(texttext)}repeat(10){Button(texttext+it)}for(iin1..5){Te...
2022-07-07 17:10:59 243浏览 0点赞 0回复 0收藏
当下,我正在基于View系统为Android开发一款全新的声明式UI框架weiV。它具有以下优势:1.声明式的UI写法让原生开发效率翻倍2.达到或超越View系统的性能我将我的FlutterConstraintLayout移植到Android,依托它先进的布局算法,在不引入固有特性测量的情况下,让View树中的子元素在任何情况都只会被layout一次,使得任意嵌套不会引起性能问题。即便View树中的每个层级宽高都是wrapcontent和matchparent混用。同时,xml将被抛弃。3...
2022-07-07 17:10:47 254浏览 0点赞 0回复 0收藏
从Android转向Flutter后,受不了没有ConstraintLayout的日子,更反感嵌套地狱,网上的优化方法都治标不治本。于是继2016年开源MagicIndicator(9100+star)以后,我只能再次发力了。点击阅读原文进入GitHub主页。FlutterConstraintLayout一个超级强大的Stack,使用约束构建极为灵活的布局,和Android下的ConstraintLayout和iOS下的AutoLayout类似。但代码实现却高效得多,它具有O(n)的布局时间复杂度,无需线性方程求解。它是一...
2022-07-07 17:10:10 290浏览 0点赞 0回复 0收藏
高级用法1.引导线FlutterWeb在线示例guideline.pngclassGuidelineExampleextendsStatelessWidget{constGuidelineExample({Keykey}):super(key:key);overrideWidgetbuild(BuildContextcontext){ConstraintIdguidelineConstraintId('guideline');returnMaterialApp(home:Scaffold(body:ConstraintLayout(children:[Container(color:constColor(0xFF005BBB),).applyConstraint(width:matchParent,height:matchConstraint,top:paren...
2022-07-07 17:09:36 390浏览 0点赞 0回复 0收藏
4.网格FlutterWeb在线示例grid.pngclassGridExampleextendsStatelessWidget{constGridExample({Keykey}):super(key:key);overrideWidgetbuild(BuildContextcontext){List<Color>colors[Colors.redAccent,Colors.greenAccent,Colors.blueAccent,Colors.orangeAccent,Colors.yellow,Colors.pink,Colors.lightBlueAccent];returnScaffold(body:ConstraintLayout(children:[...constraintGrid(id:ConstraintId('grid'),left:parent....
2022-07-07 17:09:24 197浏览 0点赞 0回复 0收藏
7.marginFlutterWeb在线示例margin.pngclassMarginExampleextendsStatelessWidget{constMarginExample({Keykey}):super(key:key);overrideWidgetbuild(BuildContextcontext){returnScaffold(body:ConstraintLayout(children:[Container(color:constColor(0xFF005BBB),).applyConstraint(size:50,topLeftTo:parent,margin:constEdgeInsets.only(left:20,top:100,),),Container(color:constColor(0xFFFFD500),).applyConstraint(s...
2022-07-07 17:09:15 328浏览 0点赞 0回复 0收藏
性能优化1.当布局复杂时,如果子元素需要频繁重绘,可以考虑使用RepaintBoundary。当然合成Layer也有开销,所以需要合理使用。classOffPaintExampleextendsStatelessWidget{constOffPaintExample({Keykey}):super(key:key);overrideWidgetbuild(BuildContextcontext){returnMaterialApp(home:Scaffold(body:ConstraintLayout(children:[Container(color:Colors.orangeAccent,).offPaint().applyConstraint(width:200,height:200...
2022-07-07 17:09:03 238浏览 0点赞 0回复 0收藏