【问题标题】:How to convert these block of codes into non-nullable statement/s in dart?如何将这些代码块转换为飞镖中不可为空的语句?
【发布时间】:2021-06-04 22:45:57
【问题描述】:

我正在尝试将这些代码行转换为不可为空的语句,但遇到错误...

主体可能正常完成,导致返回“null”,但返回类型可能是不可为空的类型。 尝试在末尾添加 return 或 throw 语句。

             child: BlocBuilder<LoginBloc, LoginState>(
                builder: (context, state) {
                  if (state is LoginInitialState) {
                    return buildInitialUi();
                  } else if (state is LoginLoadingState) {
                    return buildLoadingUi();
                  } else if (state is LoginFailState) {
                    return buildFailureUi(state.message);
                  } else if (state is LoginSuccessState) {
                    emailCntrlr.text = "";
                    passCntrlr.text = "";
                    return Container();
                  }
                },
              ),

【问题讨论】:

  • 您不能按照错误消息中的说明在末尾添加throw 语句吗?

标签: flutter dart


【解决方案1】:

试试这个

child: BlocBuilder<LoginBloc, LoginState>(
                builder: (context, state) {
                  if (state is LoginInitialState) {
                    return buildInitialUi();
                  } else if (state is LoginLoadingState) {
                    return buildLoadingUi();
                  } else if (state is LoginFailState) {
                    return buildFailureUi(state.message);
                  } else if (state is LoginSuccessState) {
                    emailCntrlr.text = "";
                    passCntrlr.text = "";
                    return Container();
                  }
                  return Container(); // In case none of the if statements is true
                },
              ),

【讨论】:

  • 成功了,谢谢。但是,在访问状态的属性(即 state.message)时,发生了错误......“参数类型'String?'不能分配给参数类型“字符串”。”在 SDK 中进行 null-safety 升级后,我在很多地方都发现了这样的错误!
  • 如果消息可以为空,您可以设置默认值:state.message ?? ''
  • 如何使用未升级到 null-safety 的包?
【解决方案2】:

试试这个

在字符串后添加“?”并返回空值; 像这样

class ValidationMixin {
  String? validateEmail(String value) {
    if (!value.contains('@')) {
      return 'Please enter a Valid Email';
    }
    return null;
  }
}

【讨论】:

    猜你喜欢
    • 2020-04-18
    • 1970-01-01
    • 2021-01-11
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多