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.

parámetro_sin_nombre en el super constructor de la clase abstracta

Soy muy nuevo en Dart y Flutter, y he estado intentando hacer dos clases (SuccessState y ErrorState) que implementen una clase abstracta (DataState) con parámetros opcionales con nombres. Por alguna razón, cada vez que llamo al constructor de la superclase en SuccessState y ErrorState, obtengo un error de parámetro con nombre no definido en el parámetro “data” en el constructor de SuccessState y en los parámetros “status” y “msg” en el constructor de ErrorState. Cualquier sugerencia es muy apreciada, gracias.

“`dart
abstract class DataState<t> {
final T? data;
final int? status;
final String? msg;

const DataState({this.data, this.status, this.msg});
}

class SuccessState<t> implements DataState<t> {
const SuccessState(T data) : super(data: data);

@override
noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
}

class ErrorState<t> implements DataState<t> {
const ErrorState(int status, String msg) : super(status: status, msg: msg);

@override
noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
}
“`

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El problema con el código es que los parámetros del constructor en SuccessState y ErrorState no están marcados como opcionales. Aquí tienes el código actualizado con parámetros nombrados opcionales:

    abstract class DataState<t> {
      final T? data;
      final int? status;
      final String? msg;
    
      const DataState({this.data, this.status, this.msg});
    }
    
    class SuccessState<t> implements DataState<t> {
      const SuccessState({required T data}) : super(data: data);
    
      @override
      noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
    }
    
    class ErrorState<t> implements DataState<t> {
      const ErrorState({required int status, required String msg})
          : super(status: status, msg: msg);
    
      @override
      noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
    }
    

    Ahora, puedes crear objetos SuccessState y ErrorState con parámetros nombrados opcionales de esta manera:

    final successState = SuccessState<int>(data: 42);
    
    final errorState = ErrorState<string>(
      status: 400,
      msg: 'Bad request',
    );
    

    Espero que esto ayude. Avísame si tienes alguna otra pregunta.

Comments are closed.