无法将“Null”类型的值分配给 const 构造函数中“String”类型的参数

bis*_*das 59 dart flutter

我无法questions[questionNumber]在 Flutter 中用作文本构造函数。

错误:

对此常量表达式的求值会引发异常。dart(const_eval_throws_exception)

不能将“Null”类型的值分配给 const 构造函数中“String”类型的参数。尝试使用子类型,或删除关键字 'const'.dartconst_constructor_param_type_mismatch

常量创建的参数必须是常量表达式。尝试使参数成为有效常量,或使用“new”调用构造函数。dartconst_with_non_constant_argument

class _QuizPageState extends State<QuizPage> {
  List<Widget> scoreKeeper = [];
  List<String> questions = [
    'You can lead a cow down stairs but not up stairs.',
    'Approximately one quarter of human bones are in the feet.',
    'A slug\'s blood is green.'
  ];

  int questionNumber = 0;

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.spaceBetween,
      crossAxisAlignment: CrossAxisAlignment.stretch,
      children: [
        const Expanded(
          flex: 5,
          child: Padding(
            padding: EdgeInsets.all(10.0),
            child: Center(
              child: Text(
                questions[questionNumber],
                textAlign: TextAlign.center,
                style: TextStyle(
                  fontSize: 25.0,
                  color: Colors.white,
                ),
              ),
            ),
          ),
        ),
     ],
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

Did*_*ete 111

嗯,错误是由于使用小部件const的关键字造成的Expanded。只要将其删除,一切都会好起来的。

所以这:

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.spaceBetween,
      crossAxisAlignment: CrossAxisAlignment.stretch,
      children: [
        Expanded(
          flex: 5,
          child: Padding(
            padding: EdgeInsets.all(10.0),
            child: Center(
              child: Text(
                questions[questionNumber],
                textAlign: TextAlign.center,
                style: TextStyle(
                  fontSize: 25.0,
                  color: Colors.white,
                ),
              ),
            ),
          ),
        ),
     ],
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 是的,对于动态变量,删除该特定小部件上的 const 关键字。 (3认同)
  • 确实,“const”是问题所在。 (3认同)