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.

La clase Custom Scaffold no dibuja la AppBar

Estoy intentando crear un Scaffold personalizado que extienda la clase original.
Con una AppBar predeterminada si no se pasa una nueva.

class CommonScaffold extends Scaffold {
  final AppBar? appBar;
  final Widget body;

  CommonScaffold({
    Key? key,
    this.appBar,
    required this.body,
  }) : super(
    key: key,
    body: body,
    appBar: appBar ??
        AppBar(
          title: const Text("Texto predeterminado"),
        ),
  );
}

Si llamo a la clase sin pasar el parámetro appBar, la AppBar no aparecerá. Pero debería aparecer.

@override
Widget build(BuildContext context) {
  return CommonScaffold(
    body: _createContent(),
  );
}

Si llamo a la clase pasando una AppBar al parámetro appBar, la AppBar aparecerá.

@override
Widget build(BuildContext context) {
  return CommonScaffold(
    body: _createContent(),
    appBar: AppBar(
        title: const Text("PRUEBA"),
    ),
  );
}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Esto se debe a que en el constructor de la clase CommonScaffold, se establece un valor predeterminado para el parámetro appBar. Especifica que si no se pasa ninguna AppBar como argumento, se creará una nueva AppBar con un título predeterminado “Texto Predeterminado”. Por lo tanto, cuando llamas a la clase sin pasar un AppBar, se utilizará el predeterminado con el “Texto Predeterminado”.

    Para asegurarte de que siempre se muestre la AppBar predeterminada, puedes modificar el constructor para eliminar la verificación de nulo para el parámetro appBar, de esta manera:

    CommonScaffold({
       Key? key,
       required this.body,
       this.appBar,//se eliminó la verificación de nulo para el parámetro appBar
    }) : super (
       key: key,
       appBar: appBar ?? AppBar(title: Text("Texto Predeterminado")),
       body: body,
     )
    

    Esta modificación garantiza que si no se pasa el parámetro appBar, se utilizará por defecto la AppBar con el título “Texto Predeterminado”. Ahora, al llamar al constructor CommonScaffold sin el parámetro appBar, siempre se mostrará la AppBar predeterminada.

Comments are closed.