为什么它一直说初始化变量



下面是我编写的代码。我需要初始化一个名为verificationID的变量,以便以后使用。但我一直看到一条红色的歪歪扭扭的线,上面写着文字-

  1. 必须初始化最终变量验证ID
  2. 必须初始化不可为null的实例字段vdi

这不是初始化的方式吗-final[datatype][name]

我是一个全新的扑腾者,需要任何帮助!

import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
enum NumberVerification {
SHOW_MOBILE_FORM_STATE,
SHOW_OTP_FORM_STATE,
}
class LoginScreen extends StatefulWidget {
final String verificationID;
String vdi;
@override
_LoginScreenState createState() => _LoginScreenState();
}

Dart中的所有变量都将获得值null,如果没有指定其他值。在您的情况下,这是一个问题,因为verificationIDvdi都被指定为不可为null的类型(类型名称后没有?)。所以Dart抱怨这个问题。

另一个问题是final变量,它也应该提供一个值,因为这是一个只读变量,只有在初始化时才能分配一个值。

因此你需要做:

  • 更改类型以允许null
  • 或者,提供null以外的默认值
  • 或者,为类创建一个构造函数,为变量提供值。这些值可以来自构造函数的参数
因为flutterdart languagenull safety。这意味着您应该初始化您的变量,并且在runtime中将有关于此的no error。因此,当您编写dart代码时,必须按照以下方式初始化它们:

1-在某些情况下,您可以直接按如下方式设置init值:

final String verificationID = 'value';

2-或者您可以从类的constructor中获取值。

final String verificationID;
LoginScreen(this.verificationID);

3-此外,您还可以声明将初始化值later。通过这种方式guarantee,您将初始化该值,因此您应该明智地使用它。

late String verificationID;
verificationID = 'value';

4-最后,您可以将一个值声明为nullable。这样,就不需要直接初始化变量。

String? verificationID;

相关内容

  • 没有找到相关文章