Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro no Key

A minha tela está dando o seguinte erro "Launching lib\main.dart on sdk gphone x86 in debug mode... Running Gradle task 'assembleDebug'... lib/Difficulty.dart:10:5: Error: Type 'key' not found. key? key, ^^^ lib/Difficulty.dart:9:10: Error: The parameter 'dificultyLevel' can't have a value of 'null' because of its type 'int', but the implicit default value is 'null'. Try adding either an explicit non-'null' default value or the 'required' modifier. this.dificultyLevel, ^^^^^^^^^^^^^^ lib/Difficulty.dart:10:5: Error: 'key' isn't a type. key? key, ^^^ Target kernel_snapshot failed: Exception

FAILURE: Build failed with an exception.

  • Where: Script 'C:\src\flutter\packages\flutter_tools\gradle\flutter.gradle' line: 1201

  • What went wrong: Execution failed for task ':app:compileFlutterBuildDebug'.

    Process 'command 'C:\src\flutter\bin\flutter.bat'' finished with non-zero exit value 1

  • Try:

    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Get more help at https://help.gradle.org

BUILD FAILED in 18s Exception: Gradle task assembleDebug failed with exit code 1"

Segue código do difficulty.dart

import 'package:flutter/material.dart';

class Difficulty extends StatelessWidget {

  final int dificultyLevel;

  const Difficulty({
    this.dificultyLevel,
    key? key,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {

    return Row(
      children: [
        Icon(
          Icons.star,
          size: 15,
          color: (dificultyLevel >= 1) ? Colors.blue : Colors.blue[100],
        ),
        Icon(
          Icons.star,
          size: 15,
          color: (dificultyLevel >= 2) ? Colors.blue : Colors.blue[100],
        ),
        Icon(
          Icons.star,
          size: 15,
          color: (dificultyLevel >= 3) ? Colors.blue : Colors.blue[100],
        ),
        Icon(
          Icons.star,
          size: 15,
          color: (dificultyLevel >= 4) ? Colors.blue : Colors.blue[100],
        ),
        Icon(
          Icons.star,
          size: 15,
          color: (dificultyLevel >= 5) ? Colors.blue : Colors.blue[100],
        ),
      ],
    );
  }
}
2 respostas
solução!

Olá, Fernanda! Parece que você está tendo problemas com o parâmetro key e o parâmetro dificultyLevel. Vamos resolver isso passo a passo.

Primeiramente, o erro Type 'key' not found. sugere que o Dart não está reconhecendo 'key' como um tipo. Isso acontece porque a declaração do parâmetro key está incorreta. No Flutter, o parâmetro key é normalmente declarado como Key key, e não key? key. Portanto, a declaração correta seria:

Key? key,

Em segundo lugar, o erro The parameter 'dificultyLevel' can't have a value of 'null' because of its type 'int', but the implicit default value is 'null'. indica que o parâmetro dificultyLevel não pode ser nulo, mas não foi fornecido um valor padrão para ele, o que faz com que ele seja nulo por padrão. Isso acontece porque você está usando o null safety do Dart, que exige que todos os parâmetros não-nulos tenham um valor padrão.

Uma maneira de resolver isso é fornecer um valor padrão para dificultyLevel. Por exemplo, você pode definir o valor padrão como 0:

final int dificultyLevel = 0;

Outra maneira de resolver isso é tornar dificultyLevel um parâmetro obrigatório, usando a palavra-chave required:

final int dificultyLevel;
const Difficulty({
    required this.dificultyLevel,
    Key? key,
}) : super(key: key);

Com essas alterações, seu código deve ficar assim:

import 'package:flutter/material.dart';

class Difficulty extends StatelessWidget {

  final int dificultyLevel;

  const Difficulty({
    required this.dificultyLevel,
    Key? key,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {

    return Row(
      children: [
        Icon(
          Icons.star,
          size: 15,
          color: (dificultyLevel >= 1) ? Colors.blue : Colors.blue[100],
        ),
        Icon(
          Icons.star,
          size: 15,
          color: (dificultyLevel >= 2) ? Colors.blue : Colors.blue[100],
        ),
        Icon(
          Icons.star,
          size: 15,
          color: (dificultyLevel >= 3) ? Colors.blue : Colors.blue[100],
        ),
        Icon(
          Icons.star,
          size: 15,
          color: (dificultyLevel >= 4) ? Colors.blue : Colors.blue[100],
        ),
        Icon(
          Icons.star,
          size: 15,
          color: (dificultyLevel >= 5) ? Colors.blue : Colors.blue[100],
        ),
      ],
    );
  }
}

Espero ter ajudado e bons estudos!

Deu certinho!! Muuuito obrigada.