Flutter ToDo App 中需要一个标识符

Expected an identifier in Flutter ToDo App

我目前正在学习 Flutter 中的 ToDo-App 教程。使用“复选框”-Function 的代码(用于显示您是否已完成任务),我收到以下错误: 需要一个标识符。

这是代码:

import 'package:flutter/material.dart';

class Check extends StatelessWidget {
  final bool? isActive;
  const Check({Key? key, this.isActive}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    if (isActive ??){
      return Container(
        width: 30,
        height: 30,
        decoration: BoxDecoration(
          shape: BoxShape.circle,
          color: Colors.green,
        ),
        child: Icon(
          Icons.check,
          size: 20,
          color: Colors.white,
        ),
      );
    } else {
      return Container(
        width: 30,
        height: 30,
        decoration: BoxDecoration(
          shape: BoxShape.circle,
          color: Colors.white,
        ),
        child: Icon(Icons.check, size: 20, color: Colors.white),
      );
    }
  }
}

如果你能在这方面支持我,我将不胜感激。我刚开始接触 flutter 并在所有我能想到的地方搜索如何解决这个问题,但找不到任何东西。

您缺少第 9 行的第二个表达式

if (isActive ?? false)

那个??运算符表示如果 expr1 为非空,returns 它的值;否则,计算并 returns expr2 的值。

expr1 ?? expr2

您的第一个条件似乎缺少一个操作数

Widget build(BuildContext context) {
    if (isActive ?? false) {   <<< 
      return Container(
      ...

你可以查看这个nullable operators article

更好的方法是使 isActive 不可为空并为其提供默认值 false

class Check extends StatelessWidget {
  final bool isActive;

  const Check({
    Key? key, 
    this.isActive = false,
  }) : super(key: key);

  // ....
}

Avoid Nullable values when possible.