es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El constructor que se está llamando no es un constructor constante.

Estoy obteniendo un error al crear un widget de Columna que dice ‘El constructor llamado no es un constructor constante’. Estoy teniendo dificultades para crear el propio widget de Columna.

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Mi primera aplicación de Flutter',
      theme: ThemeData(
        scaffoldBackgroundColor: Colors.white,
      ),
      home: const WelcomeScreen(),
    );
  }
}

class WelcomeScreen extends StatelessWidget {
  const WelcomeScreen({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return const Scaffold(
      body: Column(
        children: <widget>[
          Text("Login"),
        ],
      ),
    );
  }
}

Captura de pantalla del error está pegada aquí

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error informa que el constructor del widget Column que se está utilizando no es un constructor const. En este caso, el widget Scaffold se está definiendo como un widget const, pero el widget Column dentro de él no se está definiendo con un constructor const.

    Para solucionar este error, simplemente debes agregar la palabra clave const antes del widget Column:

    return const Scaffold(
      body: const Column(
        children: <widget>[
          const Text("Login"),
        ],
      ),
    );
    

    Agregar la palabra clave const hace que el widget sea una expresión constante y evita crear una nueva instancia del widget cada vez que se llama a build, lo cual es necesario al definir un widget padre constante (Scaffold en este caso).

Comments are closed.