当前位置: 首页 > news >正文

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判断了的,还要搞得这么复杂。 


http://www.mrgr.cn/news/28677.html

相关文章:

  • C语言的内存函数
  • Flink独立集群+Flink整合yarn
  • 代码随想录第二十三天| 39. 组合总和 40.组合总和II 131.分割回文串
  • 【Git】Git Clone 指定自定义文件夹名称:详尽指南
  • 2024版本IDEA创建Sprintboot项目下载依赖缓慢
  • SwiftUI开发教程系列 - 第十二章:本地化与多语言支持
  • ThreadX源码:Cortex-A7的tx_thread_context_restore.S(线程上下文恢复)汇编代码分析
  • Datawhale------Tiny-universe学习笔记——Qwen(1)
  • Zygote进程(孵化器进程)启动流程分析
  • Android Framework(六)WMS-窗口显示流程——窗口内容绘制与显示
  • Java8的Optional简介
  • 计算机三级网络技术总结(三)
  • 在基于线程的环境中运行 MATLAB 函数
  • Mysql | 知识 | 幻读是如何解决的
  • 并查集的应用
  • Python3网络爬虫开发实战(15)Scrapy 框架的使用
  • 找搭子是什么意思?有没有找搭子的平台?靠谱找搭子软件推荐!
  • 7.4 溪降技术:滑行
  • 【机器学习】--- 自监督学习
  • 华硕产品资料的查询方法
  • 【Kubernetes】常见面试题汇总(二十一)
  • 如何避免长距离遗忘问题
  • 18、Python如何读写csv文件
  • 关于一道逻辑思维训练题的理解(手表、闹钟、标准时间的骗局)
  • 【计网面试真题】If-Modified-Since和Etag有什么区别
  • 简单的16位CPU(中央处理单元) verilog设计 (完整全部代码)