Dart自从引入null check后写Flutter App总有一种难受的感觉

Dart自从引入null check后写Flutter App总有一种难受的感觉。比如下面的代码,class中定义了一个可null的formCtrl,在使用时候哪怕已经做了if(formCtrl != null)的判断,在if中调用formCtrl的方法,也还是会飘红。

要调用这个对象的方法,您必须这样明确告诉编译器,告诉它你确定这个对象不是null才行:

formCtrl!.createWidget(pageBuildContext);

也就是这样的做法:formCtrl !. 哪怕我上一行if中已经做了不等于null的校验。按照我们日常写其他代码的思维,既然我都做了判断,那整个做了判断代码段中就应该让我直接去调用,可是Dart不行。

已经做了不为null的判断还是不行

如果不要这么难受呢?那你就得换另一种难受的方法,定义一个局部变量,把全局的formCtrl赋值给他,然后再判断这个局部变量,再调用这个局部变量的方法,比如下面这样的:

先定义一个局部变量(局部变量名和全局变量名最好不一样,这是直接用AS的自动提示生成的):

final formCtrl = this.formCtrl;

再对局部的formCtrl做判断后再调用就没有问题了。

使用一个局部变量来解决

估计是不习惯的原因吧,总觉得这种真的难受,明明已经做了不为null判断了的,还要搞得这么复杂。

相关推荐
Data_Adventure8 分钟前
能连上 GitHub(SSH 验证成功),却 push 失败?常见原因与逐步解决方案
前端·git·github
程序员老刘11 分钟前
2025 Google 开发者大会 客户端要点速览
flutter·ai编程·客户端
勒是山城雾都21 分钟前
应用驾驶舱接入金融机构前端规范文档
前端
哈撒Ki22 分钟前
简单理解:序列化与反序列化
前端
鲸鱼呀23 分钟前
vue3+ant-design-vue4.x+sortablejs 实现可拖拽行表格
前端
用户14095081128024 分钟前
观察者模式 vs 发布订阅模式
前端
Tony小周25 分钟前
qml 实现数值键盘
前端·javascript·html
程序员海军1 小时前
不要太信任Cursor,这位网友被删库了。。。
前端·后端·cursor
mini_0551 小时前
vue3,使用v-draggable拖动时卡顿的问题
前端·javascript·vue.js
Mintopia1 小时前
Next.js 服务端状态管理:React Query vs SWR(强烈推荐)
前端·javascript·next.js