首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么在Dart中执行方法级联时会出现此错误?

在Dart中,执行方法级联时可能会出现错误的原因是方法级联符号(..)只能用于返回值为非空的方法。如果尝试在一个返回值为空的方法上使用方法级联,就会出现错误。

方法级联是一种简化代码的语法特性,它允许在一个对象上连续调用多个方法,而无需重复引用该对象。通过使用级联符号(..),可以在一个对象上执行多个方法调用。

然而,当尝试在一个返回值为空的方法上使用方法级联时,编译器会报错。这是因为方法级联符号(..)期望前一个方法调用的返回值是非空的,以便继续调用后续的方法。如果前一个方法返回值为空,那么后续的方法调用就没有对象可供调用,因此会导致错误。

为了解决这个问题,可以确保在方法级联中只使用返回值为非空的方法。如果需要在一个返回值为空的方法上执行级联操作,可以考虑使用普通的方法调用语法,而不是方法级联。

总结起来,Dart中执行方法级联时会出现错误的原因是方法级联符号(..)只能用于返回值为非空的方法。如果在一个返回值为空的方法上使用方法级联,就会导致错误。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

.NET执行AsyncAwait的两种错误方法

.NET执行异步/等待的两种错误方法 应用开发,我们为了提高应用程序的吞吐能力或者异步操作来减少耗时,通常会使用多线程来达到目的,而在C#语言中由于async/await必杀技的存在,大多会使用来简化多线程操作...Task.Run(() => client.GetServicesAsync(request)); ServiceResponse response = await responseTask; 以上代码片段一个异步方法...,方法另一个Task返回一个Task!...上面的示例确实释放了一个线程,它也立即消耗了另一个线程来执行任务包装的代码,并且该消耗的线程等待服务响应时被阻塞。因此,我们没有提高吞吐量,只是将工作从一个线程转移到了另一个线程。...而且并发下,以上使用方式在工作也极大的降低了系统性能! 解决方案可以简化为:不要对同步方法使用异步包装器!只需同步调用它们即可。

1.3K10

Dart空安全终极指南

Dart的空安全 Null Safety 的引入是 Dart 语言的一个重要里程碑。Null Safety 通过「开发期间而不是在运行时捕获 null 错误来」帮助您避免一整类问题。...assigned to a variable of type `int` 代码产生一个错误,告诉我们*“String不能将值分配给类型为变量的变量int”*。...同样,当我们 Dart 编写函数时,可以指定返回「类型」: int square(int value) { return value * value; } 由于「类型安全」,Dart 可以 100%...非空和空的一些使用技巧 dart我们一定要添加对null的检查,这样我们的代码才能更健壮。 int absoluteValue(int?...moveTo(0, 0) ..lineTo(0, 2) ..lineTo(2, 2) ..lineTo(2, 0) ..lineTo(0, 0); 上面的级联操作只有path 不为空时才会执行

1.1K10

深入理解Dart空安全

该符号执行运行时检查,表示当前值一定不为空,但操作不当容易报运行时错误。 例如在开发过程,我们可能对某些可空变量进行了非空判断后,编译器依然无法智能判断其非空,从而无法使用非空类型的方法和属性。...length.isEven); //null 避空级联操作符?.. 级联运算符有了新的判空运算符 ?.. ,他级联操作的对象不为null时执行,且只能用在级联序列的第一级运算符。  ...首先将pubspec.yaml文件dart版本修改为: environment:sdk: ">=2.12.0 <3.0.0" 然后执行 dart pub get 命令,原始文件会出现很多报红的地方,...4.2.3 迁移 这里使用工具进行自动迁移,主库的根目录下执行以下命令: dart migrate 这里又出现了内部包的导入问题,这个原因在于dart迁移命令执行过程中会检查所有外部和内部导入的库,...迁移过程,可以将暂时不考虑迁移的Dart文件顶部加上语言版本注释: // @dart=2.9 这样2.12版本的package为库指定为2.9的语言版本可以减少一些迁移的分析错误

4.4K51

Dart语言指南(一) 顶

强类型模式下,静态和运行时检查确保您的代码是安全的,帮助您捕获开发错误,而不是在运行时。强力模式Dart 1.x 是可选的,但在Dart 2.0不是可选的。...Dart工具可以报告两种类型的问题:警告和错误。 警告只是表明您的代码可能无法正常工作,但它们并不妨碍您的程序执行错误可以是编译时或运行时。...编译时错误会阻止代码执行; 运行时错误导致代码执行时引发异常。 Dart 1.x有两种运行模式:生产(production )和检查(checked)。...语句代码前被叫做 级联. 使用级联, 你可以对单个对象执行多重操作....相反, JavaScript先打印 2 然后打印2 . 如果你要在可迭代的对象上执行迭代, 你可以使用 forEach() 方法.

2.7K20

Dart语言基础语法(一)

语言开发,而Flutter为什么选择Dart语言作为唯一的开发语言呢?...函数的参数 Dart中支持两种可选参数 命名可选参数 位置可选参数 Java通常使用方法重载来实现同名方法的不同参数调用,Dart则可以通过可选参数来实现相同效果。...str2.toUpperCase(); 级联运算符 我们通常使用.操作符调用对象的方法,这在Dart也是支持的,但是Dart另外增加了一种级联运算符..,用两个点表示。...级联运算符可以同一个对象上连续调用多个方法以及访问成员变量。使用它可以避免创建临时变量, 写出更流畅的代码。...条件成员访问符 Java很容易碰到恼人的空指针错误,因此方法调用前需要进行对象的非空判断,这样的判断语句使代码变得冗长,可读性差,不整洁。Dart则发明了一个新的运算符用于处理此类情况。

2.5K30

上手指南 | Dart,随用随查

Expr1 : expr2 类型问题:警告和错误,警告表示代码可能无法正常工作,但不会阻挡程序的执行错误可能是编译或者运行时的错误,编译时错误会阻止代码的执行,运行时错误会导致代码执行引发异常(#...使用后再编译时不会推断数据的类型,但是运行时会推断。 默认值 未初始化的变量默认值是 null,即使是数字类型也是 null。...Unicode 字符) Dart , Rune 用来表示字符串的 UTF-32 编码字符 表示 Unicode 编码的常用方法是, \uXXXX, 这里 XXXX 是一个4位的16进制数。...false,那么正常的程序执行流程会被中断 assert 语句只开发环境中有效,在生产环境是无效的 异常 ​ Dart 可以抛出和捕获异常,如果没有被捕获,则会抛出,最终导致程序终止运行 ​ 和...Java 不同,Dart 的所有异常时非检查异常,方法不会声明它们抛出的异常,也不要求捕获任何异常 ​ Dart 提供了 Exception 和 Error 类型,以及一些子类型。

1.7K50

上手指南 | Dart,随用随查

Expr1 : expr2 类型问题:警告和错误,警告表示代码可能无法正常工作,但不会阻挡程序的执行错误可能是编译或者运行时的错误,编译时错误会阻止代码的执行,运行时错误会导致代码执行引发异常(...使用后再编译时不会推断数据的类型,但是运行时会推断。 默认值 未初始化的变量默认值是 null,即使是数字类型也是 null。...Unicode 字符) Dart , Rune 用来表示字符串的 UTF-32 编码字符 表示 Unicode 编码的常用方法是, \uXXXX, 这里 XXXX 是一个4位的16进制数...false,那么正常的程序执行流程会被中断 assert 语句只开发环境中有效,在生产环境是无效的 异常 ​ Dart 可以抛出和捕获异常,如果没有被捕获,则会抛出,最终导致程序终止运行 ​ 和...Java 不同,Dart 的所有异常时非检查异常,方法不会声明它们抛出的异常,也不要求捕获任何异常 ​ Dart 提供了 Exception 和 Error 类型,以及一些子类型。

1.7K70

【老孟Flutter】强大的空安全

版本要求 Dart 2.12和Flutter 2提供了空安全性,对应到Flutter项目中,则需要在pubspec.yaml文件添加如下配置: environment: sdk: ">=2.12.0...<3.0.0" 基本使用 变量 定一个 int 类型的变量, int age = null; 没有空安全前,上面的代码是没有问题的,但当使用空安全后,在编译阶段出现异常,如下: ?...,那么此时无法给属性进行初始化,代码如下: String name; 此时会编译异常: ?...:放在变量后面,表示变量值不为null,如果为null则会抛出异常,操作符经常用于如下场景:一个方法的参数为非空类型(int),而传递给当前方法的变量是可为null的类型(int?)...,那么此时编译出现异常,类型不变的情况下,在此变量的后面添加 ! ,表示当前变量不为null,代码如下: int?

2.5K20

『Flutter开发实战』一小时掌握Dart语言

每个 键 只能出现一次但是 值 可以重复出现多次。 Dart Map 提供了 Map 字面量以及 Map 类型两种形式的 Map。...备忘: 使用 List 操作 Rune 的时候需要小心,根据所操作的语种、字符集等不同可能会导致字符串出现问题,具体可参考 Stack Overflow 的提问: [我如何在 Dart 反转一个字符串.....onClick.listen(reverseText); } 备忘: 上述代码的 .. 语法称之为 级联调用。使用级联访问可以一个对象上执行多个操作。...上述代码的 sb.write() 方法返回的是 void,返回值为 void 的方法则不能使用级联运算符。 备忘: 严格来说 .. 级联操作并非一个运算符而是 Dart 的特殊语法。...} 如果你声明一个实例变量的时候就将其初始化(而不是构造函数或其它方法),那么该实例变量的值就会在对象实例创建的时候被设置,过程早于执行构造函数以及它的初始化器列表。

4.9K10

Flutter 3.7更新详解

文本放大镜 Android 和 iOS 上进行文本选择时会出现的放大镜现在也会在 Flutter 中出现了。...类似的方法同样应用到了 Flutter 引擎,用于回收 dart:ui 原生对象的 隐式内存占用。 我们的测试更改省去了 widget 创建 GPU 常驻图像构建帧时的同步 GC 工作。...此外,我们还修复了向 Dart VM 报告 Flutter 引擎已经闲置的 一处逻辑错误,也减少了 GC 带来的卡顿。...将 toImageSync 新增至 dart:ui 本次版本发布,将 Picture.toImageSync 和 Scene.toImageSync 方法直接加入到了 dart:ui,类似于 Picture.toImage...此外,自定义着色器能够开发阶段方便的执行 hot reload。自定义着色器目前已经 iOS 上对 Skia 以及 Impeller 都支持了。

3.1K00

Flutter 面试知识点集锦

7、Dart 级联操作符 可以方便配置逻辑,如下代码: event ..id = 1 ..type = "" ..actor = ""; 8、赋值操作符 比较有意思的赋值操作符有: AA...11、构造方法 Dart 的多构造方法,可以通过命名方法实现。...,开发过程,assert(unicorn == null); 只有条件为真才正常,否则直接抛出异常,一般用在开发过程,某些地方不应该出现什么状态的判断。...Zone Dart 可通过 Zone 表示指定代码执行的环境,类似一个沙盒概念, Flutter C++ 运行 Dart 也是 _runMainZoned 内执行 runZoned 方法启动...Flutter setState 其实是调用了 markNeedsBuild ,该方法内部标记Element 为 Dirty ,然后在下一帧 WidgetsBinding.drawFrame

5K61

Flutter与Dart 入门

为什么采用dart Flutter采用Dart语言进行开发,而并非Java,Javascript这类热门语言,这是Flutter团队对当前热门的10多种语言慎重评估后的选择。...Dart语言的特性 Productive(生产力高,Dart的语法清晰明了,工具简单但功能强大) Fast(执行速度快,Dart提供提前优化编译,以移动设备和Web上获得可预测的高性能和快速启动。)...C++,C语言,或者Java,你可以短短几天内用Dart来开发) Reactive(响应式编程) Dart的一些重要概念 Dart,一切都是对象,所有的对象都是继承自Object Dart是强类型语言...,但可以用var或 dynamic来声明一个变量,Dart会自动推断其数据类型,dynamic类似c# 没有赋初值的变量都会有默认值null Dart支持顶层方法,如main方法,可以方法内部创建方法...async和await往往是成对出现的,如果一个方法中有耗时的操作,你需要将这个方法设置成async,并给其中的耗时操作加上await关键字,如果这个方法有返回值,你需要将返回值塞到Future并返回

1.3K20

Flutter基础之Dart语言入门

Dart的类和接口是统一的,类即接口,你可以继承一个类,也可以实现一个类(接口),自然也包含了良好的面向对象和并发编程的支持。 Dart 提供了顶级函数(如:main()),俗称入口函数。...Dartium:内嵌 Dart VM 的 Chromium ,可以浏览器中直接执行 dart 代码。 Dart2js:将 Dart 代码编译为 JavaScript 的工具。...对象不是某个类型 变量与常量 var Dart是强类型语言. 当var声明一个变量后,Dart在编译时会根据第一次赋值数据的类型类推断其类型。编译完成后其类型就已经被确定。...Dart的var变量一旦赋值,类型遍会确定,则不能再改变其类型。...级联操作 可对同一对象执行一系列操作 Dio() ..options.baseUrl = 'http://app4.jinriaozhou.com/' ..options.connectTimeout

72930

Flutter--Dart学习

,否则编译错误 - 调用方式 add(1,2); // 可选命名参数 - 函数定义 int add(int x,int y,{int z:10,int m});//x,y函数调用时必须传入,而...,z,m按参数传入顺序赋值,10为z的默认值 - 调用方式 add(1,2);//x=1,y=2 add(1,2,3);//x=1,y=2,z=3; add(1,2,3,4); Dart,每个Function...当想在同一个对象上执行多个操作的时候,可以用级联操作符 (..) main() { T t = new T() ..x = 10 ..y = 20 ..z = 30; }...这样的方案可以替代了Java的static的工具方法,充分贯彻Dart的一切都是对象的原则 // step1:定义一个类,实现了功能 class NumberOperator{ bool isAdded...import 'dart:io'; // 系统库 import 'package:mylib/mylib.dart'; // 本地文件 设置库的前缀 如果两个库具有同样的标识符,则会出现命名冲突

95020

Flutter Platform Channels(一)

因此,虽然Flutter邀请你Dart编写app,但你依然可以宿主app中使用Java/Kotlin或*Objective-C/Swift执行尽可能多的操作,直接调用平台特定的API。...//代码可以添加到FlutterActivity子类, // 通常是onCreate。...第一行代码在运行时会遇到错误,除非回复为null。 标准消息编解码器是为异构list和map编写的。...final String reply = await channel.send('hello, world'); return reply; } 第一种方法在运行时会遇到错误,即使收到的回复是字符串...一种方法是让消息表示一个方法调用,并将它的值作为参数。 因此,你需要一种将方法名称与消息的参数分开的标准方法。 而且你还需要一种标准方法来区分成功回复和错误回复。

4.3K01

Dart 学习之开发语言概览,带思维导图(一)

最后终端输入dart --version显示dart版本号就说明安装成功了。 ? dart安装成功 2....Dart 支持顶级函数(例如 main 方法),同时还支持定义属于类或对象的函数(即 静态 和 实例方法)。你还可以函数定义函数(嵌套 或 局部函数)。...,添加断言来打断代码的执行 assert 是否生效依赖开发工具和使用的框架,命令行可以执行dart命令 void main(List args) { var num = 100;...// 命令行执行 dart --enable-asserts 断言.dart // 然后就会报错,后面的所有内容不再执行 assert(num < 10); // 第二个参数可以指定异常错误信息...assert(num < 90, '异常: ($num) 不小于90'); // 如果直接执行 dart 断言.dart 因为是在生产环境,所以不会出现错误 } 函数 函数定义

1.7K20

Flutter 2.5正式版发布,带来重大更新

以前某些图像的内存在响应 Dart VM 的 GC 执行时会延迟回收,作为早期版本的解决方法,Flutter 引擎会通过 Dart VM 的 GC 回收暗示图像内存可以回收,这在理论上可以实现了更及时的内存回收...新版本的Dart 带有新的格式,使级联更加清晰;新的 pub 支持忽略文件,以及新的语言功能,包括三重移位运算符的回归。...Android 全屏、Material You & 文本编辑快捷方式 从(#81303) 开始, 我们修复了 Android 一系列与全屏模式相关的问题,更改还添加了一种在其他模式下收听全屏更改的方法...例如,用户与应用互动时,当系统 UI 返回时,开发人员现在可以编写代码返回全屏时执行其他操作。...目前,Flutter 团队的一些插件已经使用了 Pigeon,在此版本它提供了更多有用的错误消息,增加了对泛型、原始数据类型作为参数和返回类型以及多个参数的支持,预计开发者将来会更频繁地使用它。

4.3K50

Flutter技术与实战(3)

Dart的变量与类型 Dart ,我们可以用 var 或者具体的类型来声明一个变量。...// 检查是否为0, Dart 需要显示地与 0 做比较 var number = 0; assert(number == 0); // assert(number); 错误 Dart 的 String...如果编译器自动推断的类型不符合预期,我们当然可以声明时显式地把类型标记出来,不仅可以让代码提示更友好一些,更重要的是可以让静态分析器帮忙检查字面量错误,解除类型不匹配带来的安全隐患或是 Bug。... Dart ,实例变量与实例方法、类变量与类方法的声明与 Java 类似。...构造函数的函数体真正执行之前,你还有机会给实例变量赋值,甚至重定向至另一个构造函数。

2K10
领券