问题标签 [dart-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 投票
0 回答
478 浏览

flutter - hooks_riverpod:使用 Riverpod 进行 Flutter Firebase 身份验证,发生错误:提供者试图将“null”分配给不可为空的“exposedvalue”

我尝试根据本教程为 Flutter 实现 Firebase Auth:https ://youtu.be/vrPk6LB9bjo?t=393

Widget 应该检查用户是否使用riverpod hook 方法和提供者登录并加载HomeScreen 或LoginScreen Widget。

主要.dart

提供者控制器:

但我得到了这个错误。

'package:riverpod/src/framework/base provider.dart':断言失败:第 944 行 pos 7:'exposedvalue is listened':提供者试图分配 null给不可为空的exposedvalue

我认为错误可能出在 Provider Controller 的实现中,但我不知道应该如何做不同的事情。

有谁知道我该如何解决这个错误?

0 投票
2 回答
167 浏览

dart - 使用 Dart 零安全性进行延迟加载

我正在尝试将一些代码迁移到启用 null 安全性的 Dart 2.12,但是在找到一种使用延迟加载/缓存值迁移方法的好方法时遇到了问题。

Dart 2.12 不会编译以下代码,除非我将 getValue() 的返回类型从MyObject更改为MyObject?。然而getValue()永远不会回来null

2021-03-17 更新

根据斯蒂芬的回答马蒂亚的评论,我现在正在使用:

0 投票
4 回答
5821 浏览

firebase - 属性 'docs' 不能无条件访问,因为接收到的可能是 'null' Flutter

迁移到 null-safety 后显示此错误。我现在该怎么办?

添加显示此错误的空检查 (!) 后<the getter 'docs' is not defined for the type of object>

0 投票
1 回答
74 浏览

flutter - Flutter 键盘在模拟器和真实设备上均未显示>

我的意思是键盘确实出现了几毫秒,然后立即消失了,这是在模态底部表内,但我不认为这是表的问题。

我看到有人说这是编译版本28的bug,降级到27可以修复,但是我的项目已经是Sound Null Safety,如果我降级,我必须重写整个应用程序,因此,我不能将其降级为 27。

有人可以帮我解决这个问题吗?@_@

0 投票
3 回答
2870 浏览

string - “参数类型'字符串?' 使用 stdin.readLineSync() 时无法分配参数类型“字符串”

我是飞镖的新手。我不知道我犯了什么样的错误,但是这段代码不起作用。是一个简单的代码,只需在终端中读取年龄并说它是未成年人或超过 18 岁。

我得到这个错误:

0 投票
1 回答
112 浏览

flutter - Dart 空值安全和智能检测非空值

我对 Dart 空值安全有疑问。

即使我明确检查空值,它仍然会抱怨在此处输入图像描述

感叹号正在解决这个问题

在此处输入图像描述

但它非常丑陋和麻烦。

有没有办法让它更聪明更好?比如header?.let{ it.toUpperCase() }在 Kotlin 中?

0 投票
3 回答
3932 浏览

flutter - Flutter null 安全性 - 参数类型“颜色?” 不能分配给参数类型“颜色”

我将 Flutter 的 SDK 版本更改为 min ,以便我可以修复我的代码以实现空安全。

有一个我不明白的问题,这一行产生以下错误:

但是如果我Colors.grey[300]用任何不使用的值进行更改[],它就会起作用,所以Colors.grey效果很好。

我应该在这里更改什么以继续使用grey[300]

0 投票
2 回答
22165 浏览

flutter - Flutter 2.0.2 Null 检查运算符用于空值

虽然我知道这可能看起来像是重复的,有多少关于这个错误的不同帖子,但我收到这个错误是因为(我假设)是四个不同屏幕上的不同原因。

我的应用程序启动,但每当我尝试导航我的应用程序时,我最终都会收到红屏错误,因为它说屏幕中的一个小部件在空值上使用了空值检查运算符。

以下是我得到的错误:

在构建 NotificationBanner(dirty) 时引发了以下 _CastError: Null check operator used on a null value。相关的导致错误的小部件是:NotificationBanner file:///Users/alexm/carebloom-flutter/lib/Views/homeview.dart:9:7

在构建 AlertBanner(dirty) 时引发了以下 _CastError:Null check operator used on a null value。相关的导致错误的小部件是:AlertBanner file:///Users/alexm/carebloom-flutter/lib/Views/alerts_view.dart:57:15

在构建 MessageOverView(dirty) 时引发了以下 _CastError:Null 检查运算符用于空值。相关的导致错误的小部件是:MessageOverView file:///Users/alexm/carebloom-flutter/lib/widgets/navbar.dart:41:16

这个有点不同

在构建 SettingsView(dirty, dependencies: [_EffectiveTickerMode], state: _SettingsViewState#ddb1e(tickers: tracking 1 ticker)) 时抛出了以下 _CastError:空值检查运算符。相关的导致错误的小部件是:SettingsView file:///Users/alexm/carebloom-flutter/lib/widgets/navbar.dart:49:16

现在我假设错误位于作为 WidgetName(dirty) 返回的任何小部件中。所以每一个的代码都在下面。但是,我还想在所有这些之上提出一些问题,以更好地理解并帮助我在未来诊断问题。当它具有 WidgetName(dirty) 时,这究竟意味着什么是 (dity)?除了显示特定小部件的错误消息外,它还提供“相关的导致错误的小部件路径,是我应该查看的路径吗?

通知横幅:

警报横幅:

MessageOverView:

设置视图:

到目前为止,我已经检查了所有有空检查但无法修复的内容。我已经将颤振升级到 2.0.2,运行颤振 pub 缓存修复,并通过两次确保这些事情正确完成。我不确定我错过了什么,但我认为它实际上在代码中。

0 投票
3 回答
3959 浏览

flutter - Flutter Null 安全迁移说“包不存在”

Flutter Null 安全迁移

我正在尝试将我的项目迁移到 Flutter Null 安全版本,并且我正在遵循这个官方迁移指南。

当我运行第二个命令时,它说
Package doesn't exist (the Flutter SDK is not available).

我跑的命令

我@My-MacBook-Air my_project %dart --version
Dart SDK version: 2.12.0 (stable) (Thu Feb 25 19:50:53 2021 +0100) on "macos_x64"
我@My-MacBook-Air my_project %dart pub outdated --mode=null-safety
Package doesn't exist (the Flutter SDK is not available).

颤振医生输出

0 投票
1 回答
4298 浏览

dart - 如何在构造函数主体中初始化不可为空的成员?

我已经以这种方式在 Dart 中创建了我的课程,但我Non-nullable instance field 'text' must be initialized. Try adding an initializer expression, or add a field initializer in this constructor, or mark it 'late'.想知道是否有一种方法可以以“Python”风格来完成这种课程的创建,提前谢谢你。