问题标签 [null-safety]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
778 浏览

flutter - GetX 页面路由返回“用于空值的空检查运算符”错误

我正在尝试使用包含空安全性的最新版本的 Flutter 使用 GetX 进行非常简单的页面路由。即使我没有传递任何参数或引用任何变量,它也会不断返回错误“用于空值的空检查运算符”。

这是我非常简单的代码:

如您所见,没有理由选择任何空值。

我在 pubspec.yaml 文件中使用以下包:

0 投票
0 回答
126 浏览

entity-framework-core - 修改从 .net core Entity Framework Scaffold 自动生成的属性

我们的目标

为了能够使用一个工具来自动从我们的数据库(MySQL)中生成所有模型,并Null Safety启用(Nullable参考类型),这让我们可以修改一些属性的类型和值,而不会失去自动生成的所有优势。数据库字段不能更改

我们现在的情况

我们正在使用 **Entity Framework scaffold命令** 来生成我们的数据库模型。

我们正在使用HbsCSharpEntityTypeGeneratorHandlebars库扩展的自定义类来修改属性的类型(我们使用它是因为我们只需要修改来自特定实体的属性),然后OnModelCreatingPartial(ModelBuilder modelBuilder)在读取/保存到 DB 时使用它来转换值,一个例子:

问题

如此处所示Entity Framework's当类型为int和时,不会调用属性转换器int?,这意味着ValueConverter<int, string>每次我们需要读取/保存到数据库时都会调用 a ,但不会调用 a ValueConverter<int?, int>

我们使用这种方法的主要原因是在我们的模型中使用 Nullable 类型和正确的值而不是错误的占位符(空字符串、零、错误的默认日期等),任何符合上述要求的解决方案都会很好。

先感谢您。

0 投票
1 回答
107 浏览

flutter - 迁移到空安全后的 Dart 闭包返回类型问题

下面的代码在迁移到 Flutter 2 和 null 安全性之前可以正常工作。我只是无法弄清楚正确的返回类型应该是什么。我得到的错误是:

代码是:

0 投票
2 回答
659 浏览

flutter - 空感知 .firstWhere、.singleWhere、.lastWhere 在 Dart 的列表中?

我经常.firstWhere((E element) -> bool) -> E在我的项目中使用。当移植它以支持空安全时,我无法干净地处理在List实例中找不到元素的情况。

.firstWhere,.singleWhere和return ,在处理 List 不包含必需元素的情况时,除了从例如转换整个列表之外没有其他方法可以.lastWhere返回。这使测试功能担心每个元素都可能为空,而这是不可能的。在 null 安全之前,我只能使用但 null 安全必须返回类型的元素,因此需要麻烦的转换。EE?nullList<String>List<String?>orElse: () => nullorElseE

我是否必须null为每种类型使用一个替代品,orElse或者是否有其他方法可以使列表检查支持 null 的缺失元素场景?

0 投票
1 回答
44 浏览

flutter - 如何不打印从 sqflite 数据库接收到的空值?

我正在制作一个“食谱应用程序”来学习。我现在遇到了这个问题:
我正在使用 Sqflite,我有一个页面显示配方中的成分,sql 查询没问题,但问题是我得到的是空值而且我不知道怎么做才能隐藏它们。我已经尝试过条件、运算符(例如(条件?X:Y))、替换,但似乎没有任何效果。PS:有些变量是西班牙语,因为我说的是那种语言。

成分型号:

我返回要显示的成分的小部件:

在最后一种方法中_unitText,我尝试了很多方法来施展魔法,但是:

-我不能在条件中使用“ingmod.unit?.isEmpty”,因为:

A nullable expression can't be used as a condition. Try checking that the value isn't 'null' before using it as a condition.

- 不能使用“ingmod.unit.length == 0”,因为: The property 'length' can't be unconditionally accessed because the receiver can be 'null'. Try making the access conditional (using '?.') or adding a null check to the target ('!').

-然后,要返回不为空的“成分单元文本”,我不能使用“+”添加字符串: "The operator '+' can't be unconditionally invoked because the receiver can be 'null'. Try adding a null check to the target ('!').

如果我修复错误以运行应用程序,我会得到这个(如您所见,空值是可见的):

1

0 投票
1 回答
29 浏览

flutter - TMDB_API 不支持空安全?

我正在使用 tmdb_api 制作电影应用程序。

我将包添加到 pubspce.yml 并进行了 pubget。当然,它是正常添加的。

我在 main.dart 中连接了 api 密钥和令牌。此连接方法请参阅 pub.dev。

主要.dart

ModifiedText是一个只将文本输出到 googleFont 的类。

trending,是从 tmdb_api 获取的值topratedtv

错误

错误:无法以可靠的 null 安全性运行,因为以下依赖项不支持 null 安全性:

  • 包:tmdb_api

我以良好的零安全性对其进行了编码。上周五,它工作正常,但今天发生错误。自更新进行以来,有什么需要更改的吗?

0 投票
2 回答
226 浏览

flutter - 如何在 List 中创建通用函数在 Dart 中获得非可选类型 - 空安全

我们正在将我们的Flutter应用程序迁移到null 安全性中,我遇到了一堆缺失的帮助程序,以便轻松地将可选项转换为相同类型的非可选项。

为了让您了解上下文,我想要一个

List<String?> optionalList = ['hi', 'hola', null];

compactMap()Swift 类似,我想要一个函数,可以将任何地图转换为排除空项目的地图,并且只返回非可选项目的列表,例如:

我正在尝试为此类案例提供帮助,包括我认为对Dart有价值的许多其他案例。

有谁知道它为什么不起作用,这是我迄今为止尝试过的一点:

尽管这确实删除了空值并执行了映射,但它始终在列表中返回相同的可选类型,这意味着它不会解包并removeNulls()返回 aList<dynamic>而不是 aList<the_type_I_used>

我非常感谢您帮助理解为什么这两个函数永远不会改变它们的类型,因为我只能找到该主题的非常基本的泛型帖子。

0 投票
0 回答
50 浏览

flutter - 升级颤振版本时发布失败

我已经将颤振版本升级到最新(2.5.2)。当我升级时,一些依赖项也升级了。但其中一些与 null-safe 不兼容。

SDK版本为(2.5.2),

建议版本(仅限不兼容的版本),

pub get在未升级这些依赖项的情况下运行时发生错误,

有没有解决这些依赖问题的解决方案?

0 投票
1 回答
50 浏览

flutter - 我在控制台中遇到以下错误,我已经尝试修复了几个小时

这是错误控制台正在显示。它说它在 Root 小部件中

这是我的代码

'''

'''

AuthController 和 firebase,我使用 Rxn 来保证空值安全。

'''

'''

用户控制器

0 投票
0 回答
28 浏览

flutter - 在 Null-Safety Flutter 上构建期间调用的 setState() 或 markNeedsBuild()

有人可以解释一下这个错误的含义以及如何解决它吗?

我在更新 null-safety 后得到了它,不知道如何修复它。

我已经在 stackoverflow 上检查了其他线程,但无法理解问题所在。也许有人可以以更好的方式向我解释。

每次我从主页切换到另一个页面时都会出现