dart 在 Flutter 中铸造贴图

7gyucuyw  于 2023-05-11  发布在  Flutter
关注(0)|答案(2)|浏览(134)

在SummaryItem(下面的代码)中,当我试图将question_index转换为int时,它显示一个错误,说类型'Null'不是类型转换中类型'int'的子类型。在QuestionIdentifier中(图片如下),question_index被设置为int。为什么显示这些错误?

import 'package:adv_basics/question_identifier.dart';
import 'package:flutter/material.dart';

class SummaryItem extends StatelessWidget {
  final Map<String, Object> iconData;
  const SummaryItem(this.iconData, {super.key});

  @override
  Widget build(BuildContext context) {
    final isCorrectAnswer =
        iconData["correct-answer"] == iconData["user-answer"];
    return Row(
      children: [
        QuestionIdentifier(
          correctAnswer: isCorrectAnswer,
          questionIndex: iconData["question-index"] as int,
        ),
        const SizedBox(width: 5),
        Expanded(
          child: Column(
            children: [
              Text(
                iconData["question"] as String,
              ),
              Text(iconData["correct_answer"] as String),
              Text(iconData["user_answer"] as String),
            ],
          ),
        )
      ],
    );
  }
}
cwdobuhd

cwdobuhd1#

您看到这个错误是因为iconData["question-index"]的值是null

方式一:可以使用空值感知运算符?

QuestionIdentifier(
  correctAnswer: isCorrectAnswer,
  questionIndex: iconData["question-index"] as int?,
),

如果iconData["question-index"]的值是null,它不会抛出错误。
QuestionIdentifier类中也可以使questionIndex字段为空。

方法二:在将iconData["question-index"]传递给不支持空参数的新子小部件之前,您应该检查其值以确保is不是null值。

n9vozmp4

n9vozmp42#

iconData[“question-index”]为null

QuestionIdentifier(
          correctAnswer: isCorrectAnswer,
          questionIndex: iconData["question-index"] ??0,
        ),

相关问题